ユーザーが検索を送信した後、モデルの表示ページにリダイレクトするときに問題があります。検索は2つの方法で行われます。データベースを検索して、ETFがあるかどうかを確認します。そうでない場合は、データのWebページをスクラップし、データベースに保存します。検索フォームのための経路は、ここhttp://localhost:3000/search_etfsあるコントローラである:検索後の表示ページにリダイレクトする - Rails
クラスEtfsController < ApplicationControllerに
def search
if params[:etf]
@etf = Etf.find_by_ticker(params[:etf])
@etf ||= Scraper.new_from_lookup(params[:etf])
end
if @etf.present?
redirect_to @etf
else
puts "ETF was not found."
end
end
def show
@etf = Etf.find(params[:id])
@top_holdings = @etf.top_holdings
@country_weights = @etf.country_weights
@sector_allocations = @etf.sector_allocations
end
end
端末は、対応するETFショーページにリダイレクトされるべきである意味しています。私は、URLが検索のためのショーページを表示していましたhttp://localhost:3000/search_etfs?=SPYようなものになるだろう、理想的には
root 'welcome#index'
get 'search_etfs', to: 'etfs#search'
get '/etfs/:id', to: 'etfs#show', as: 'etf'
:まだWebページが新しい対応するURLここ
Started GET "/etfs/2" for ::1 at 2017-04-30 11:27:34 -0400
Processing by EtfsController#show as JS
Parameters: {"id"=>"2"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]]
Etf Load (0.1ms) SELECT "etfs".* FROM "etfs" WHERE "etfs"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]]
Rendering etfs/show.html.erb within layouts/application
TopHolding Exists (0.1ms) SELECT 1 AS one FROM "top_holdings" WHERE "top_holdings"."etf_id" = ? LIMIT ? [["etf_id", 2], ["LIMIT", 1]]
TopHolding Load (0.2ms) SELECT "top_holdings".* FROM "top_holdings" WHERE "top_holdings"."etf_id" = ? [["etf_id", 2]]
SectorAllocation Exists (0.2ms) SELECT 1 AS one FROM "sector_allocations" WHERE "sector_allocations"."etf_id" = ? LIMIT ? [["etf_id", 2], ["LIMIT", 1]]
SectorAllocation Load (0.2ms) SELECT "sector_allocations".* FROM "sector_allocations" WHERE "sector_allocations"."etf_id" = ? [["etf_id", 2]]
CountryWeight Exists (0.2ms) SELECT 1 AS one FROM "country_weights" WHERE "country_weights"."etf_id" = ? LIMIT ? [["etf_id", 2], ["LIMIT", 1]]
CountryWeight Load (0.3ms) SELECT "country_weights".* FROM "country_weights" WHERE "country_weights"."etf_id" = ? [["etf_id", 2]]
Rendered etfs/show.html.erb within layouts/application (14.5ms)
Completed 200 OK in 148ms (Views: 130.6ms | ActiveRecord: 1.4ms)
に行かないルートですETF。
は@Robikulに応じて、より多くの情報を追加するには:マイ検索フォームをAJAXを介して行われます:あなたはProcessing by EtfsController#show as JS
をログから
<%= form_tag search_etfs_path, remote: true, method: :get, id: 'etf-lookup-form' do %>
ありがとうrokibulに次のコードを試すことができます。 ETFに基づいて動的にレンダリングするにはどうすればいいですか? I./etf/1、/ etf/2、/ etf/3などにリダイレクトできますか? –
私はあなたの質問に従って答えを編集しました。見てください。 –