我正在用户索引页面上对用户模型进行排序。现在,我所拥有的是两个可以通过单选按钮访问的选项。我可能会以错误的方式做这件事,它现在有效,但如果你有更好的方法,那么请说清楚。我的主要问题是为什么选择单选按钮时不会检查它们?
用户的索引控制器
if params[:sort] == "popular"
@users = User.most_popular_users
elsif params[:sort] == "recent"
@users = User.most_recent_users
end
User.rb
scope :most_popular_users, -> do
results = select {|user| user.followers }
results.sort! {|t1, t2| t2.followers.count <=> t1.followers.count}
end
scope :most_recent_users, -> do
results = User.all
results.sort! {|t1, t2| t2.created_at <=> t1.created_at}
end
同样,我不确定在“最佳实践”方面有多正确,所以如果它错了,我也愿意改变它。回到问题......
我的观点如下:
<%= form_tag find_users_path, :method => 'get' do %>
<%= radio_button_tag(:sort, "popular") %>
<%= label_tag(:sort_popular, "Popular") %>
<%= radio_button_tag(:sort, "recent") %>
<%= label_tag(:sort_recent, "Recent") %>
<%= submit_tag "Submit" %>
<% end %>
现在,当您提交表单时,它会正确地对用户进行排序,但未在相应页面上选择所选的收音机。因此,当您提交表单时,找到popular
个用户,网址如下:
/people?sort=popular
但未检查popular
的单选按钮。
答案 0 :(得分:3)
您需要执行以下操作:
radio_button_tag(:sort,"popular", params[:sort].eql?("popular"))
radio_button_tag
助手的第3个参数接受true或false值,以了解是否检查了无线电。更多信息:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-radio_button_tag