我正在开发一个小型股票市场应用程序,用户可以根据股票代码查找公司股票信息。用户在搜索字段中发布了:symbol param后,应将其重定向到相应的“公司”页面(如华尔街日报,雅虎财经,Google财经等)。我现在能够手动输入带有符号的路线,一切都很好。例如,localhost:9292 / company / GOOG。我是一个完全的菜鸟,所以任何帮助都会非常感激。谢谢!
我目前在我看来有这个:
<%== search_field_tag(:symbol, "Enter symbol") %>
<%== submit_tag ("Search") %>
这是我的路线:
get "/company/:symbol" => "main#company"
post "/company/:symbol" => "main#company_post"
编辑:我正在使用MarketBeat gem来提取数据,但我也有一个Company表,其中我有列符号和名称。这是我的控制器:
class MainController < ApplicationController
def index
render :index and return
end
def company
@name = MarketBeat.company params["symbol"]
@symbol = MarketBeat.symbol params["symbol"]
@price = MarketBeat.last_trade_real_time params["symbol"]
@change = MarketBeat.change_and_percent_change params["symbol"]
@volume = MarketBeat.volume params["symbol"]
@days_range = MarketBeat.days_range params["symbol"]
@eps = MarketBeat.earnings_to_share params["symbol"]
@pe = MarketBeat.pe_ratio params["symbol"]
@stock_exchange = MarketBeat.stock_exchange params["symbol"]
market_cap = MarketBeat.market_capitalization params["symbol"]
# @market_cap is rounded to billions
@market_cap = market_cap.to_i / 1000
render :company and return
end
答案 0 :(得分:2)
在main#company_post
方法中,输入以下内容:
redirect_to "/company/#{params[:symbol]}"
所以路线应该是:
get "/company/:symbol" => "main#company"
post "/company" => "main#company_post"
控制器:
def company_post
redirect_to "/company/#{params[:symbol]}"
end
观点:
<%= form_tag("/company", method: :post) do %>
<%= search_field_tag(:symbol, "Enter symbol") %>
<%= submit_tag ("Search") %>
<% end %>
答案 1 :(得分:0)
在#company
控制器方法结束时,你可能会做类似这样的事情
render "#{params[:symbol]}"
或
render partial: "#{params[:symbol]}"
同时拥有一个与公司名称相同的模板文件,例如google.html.erb
试一试!
答案 2 :(得分:0)
我制作看起来几乎像你的任务的简单搜索系统
完整示例
routes.rb
post 'search' => 'vids#prepare_search', as: :prepare_search_vids
get 'search(/*query)' => 'vids#search', as: :search_vids
vids_controller.rb
# GET /search(/*query)
def search
@results = Title.search params[:query] if search_query?
if @results.count == 1
flash[:notice] = I18n.t 'vids.search.signle_result'
redirect_to @results[0].vid
end
@query = params[:query]
end
# POST /search
def prepare_search
query = params[:q] ? params[:q] : ''
redirect_to search_vids_path(query)
end
private
def search_query?
params[:query] and !params[:query].blank?
end
同样在你的情况下,我建议在路线http://guides.rubyonrails.org/routing.html#route-globbing-and-wildcard-segments
中使用asteriks而不是冒号