通过rails中的link_to传递多个参数

时间:2017-05-16 12:00:34

标签: ruby-on-rails

如何将多个参数从视图传递到控制器?我需要执行一个请求,例如:

GET "/indicators/data?country_id=5&statistic_id=12&anotherparameter_id=anothervalue, ...."

每个参数都是由它自己的link_to选择生成的,我想一起使用这些参数来查询我的模型。

#app/views/indicators/index.html.erb
<!--statistic select button-->
<ul id = "statistics">
   <% Statistic.all.each do |stat| %>
   <li><%= link_to stat.indicator_name, :action => "data", :controller => "indicators", :statistic_id => stat.indicator_code, remote: true %></li>
   <% end %>
</ul>

<!--country select button-->
<ul id = "countries">
   <% Country.all.each do |c| %>
   <li><%= link_to c.name, :action => "data", :controller => "indicators", :country_id => c.id, remote: true %></li>
   <% end %>
</ul>

#config/routes.rb
get 'indicators/data' => 'indicators#data'

#app/controllers/indicators_controller.rb
  def data
    @country = Country.find(params[:country_id]).name
    @statistic = params[:statistic_id]
    @queryresult = Mymodel.where(country: @country, statistic: @statistic)
    respond_to do |format|
      format.js
    end
  end

编辑:我遇到了建议的答案:

link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux")
# => <a href="/searches?foo=bar&amp;baz=quux">Nonsense search</a>

但在我的情况下,我有两个不同的链接,一个参数对应于foo(例如一个复选框),另一个参数为baz(例如一个下拉列表)。挑战在于如何从不同的链接中提取参数并将它们组合在一起。

1 个答案:

答案 0 :(得分:0)

您可以简单地将route_helper_method与您想要传递的参数一起使用,而不是使用控制器,操作等。

<li><%= link_to stat.indicator_name, indicators_data_url(countryid: "value", another_id: "value", etc: "etc"), remote: true %></li>

在这里阅读link_to