如何将多个参数从视图传递到控制器?我需要执行一个请求,例如:
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&baz=quux">Nonsense search</a>
但在我的情况下,我有两个不同的链接,一个参数对应于foo(例如一个复选框),另一个参数为baz(例如一个下拉列表)。挑战在于如何从不同的链接中提取参数并将它们组合在一起。
答案 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