假设我有一个应用程序,列出了世界各地不同城市的不同俱乐部。在clubs_controller.rb的索引操作中,除非提供城市参数,否则我将返回所有俱乐部
def index
if params[:city]
@clubs = Club.where(:city_id => params[:city])
else
@clubs = Club.all
end
end
为了实现这一目标,我想创建一个动态集合选择链接,用户可以在其中选择城市。现在,我正在这样做,但这是为每个城市创建一个链接,这不是我想要的。
<% City.all.each do |city| %>
<%= link_to city.name, clubs_path(:city => city) %>
<% end %>
有没有办法创建一个链接,我根据所选的城市链接更改?
与此博客相关的一个SO答案解释了如何使用jquery http://marcgrabanski.com/articles/jquery-select-list-values来解决这个问题,但该页面现已被删除。
答案 0 :(得分:1)
您可以在链接中传递这样的参数。
<%= link_to city.name, {:controller => "clubs", :action => "index", :city => city.id} %>
<强>更新强> 您可以将表单提交到索引页面。
<%= form_tag clubs_path, :method => 'get' do %>
<%= select_tag :city_id, options_for_select(City.all.collect{ |c| [c.name, c.id] }) %>
<%= submit_tag "Get Clubs", :name => nil %>
同样在您的控制器中,您可以检查param city_id。