如何在视图中检查存在参数

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)

有没有办法从视图中检查是否存在参数?

谢谢你的帮助,

安东尼

Fil*_*uzi 6

观点不应该知道params.在控制器(或视图助手)中创建像`的变量

if params[:publication] @selected = params[:publication][:category] end 甚至可以在一行中完成

@selected = params[:publication].try(:[], :category)