Too*_*tje 1 ruby ruby-on-rails
我有一个过滤搜索表单:
<%= form_tag admin_publications_path, method: "get", id: "filter", class: "filter" do %>
<%= label_tag "Category" %>
<%= select "publication", "category", options_for_select(options_for_categories, selected: params[:publication][:category]), {prompt: 'All'}, onchange: "$('#filter').submit();" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
只要有params [:publication] [:category]可用,这种方法就可以正常工作.
但是如果params不可用,例如在没有先前搜索的情况下渲染视图时,我会收到错误:
undefined method `[]' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
有没有办法从视图中检查是否存在参数?
谢谢你的帮助,
安东尼
观点不应该知道params.在控制器(或视图助手)中创建像`的变量
if params[:publication]
@selected = params[:publication][:category]
end
甚至可以在一行中完成
@selected = params[:publication].try(:[], :category)