1

我正在开发一个小型股票市场应用程序,用户可以在其中根据股票代码查找公司股票信息。用户在搜索字段中发布 :symbol 参数后,他们应该被重定向到适当的“公司”页面(如华尔街日报、雅虎财经、谷歌财经等)。我目前可以手动输入带有符号的路线,一切正常。例如,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
4

3 回答 3

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 %>
于 2013-09-05T17:24:32.753 回答
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中使用星号而不是冒号

于 2013-09-05T18:03:51.800 回答
0

在你的#company控制器方法结束时,你可能会做这样的事情

render "#{params[:symbol]}"

或者

render partial: "#{params[:symbol]}"

还有一个与公司同名的模板文件,比如google.html.erb

试试看!

于 2013-09-05T17:17:24.003 回答