0

总而言之,为了动态组合search.html.erb视图,我们将需要显示为散列或表示为表中字符串的散列的每个字段的详细信息存储在表中。例如,要显示一个status字段,我们将相关status布局存储如下:

{:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }

然后我的 search.html.erb 有下面的伪代码

<%= simple_form_for @model,  :method => :put, :url => @search_results_url  do |f| %>
      <%= @fields_details.each do |field, layouts| %>
          <%= f.input field, eval(layouts) %>
      <% end %>
<% end %> 

目标是最终得到类似的东西

<%= f.input :status, :label => 'Status', :collection => return_misc_definitions('project_status') %>

我们正在使用eval“布局”的功能,但这不起作用,因为 eval 试图评估 function return_misc_definitions。我怎样才能逃避这种评价?我们正在使用ruby 1.9.3和。谢谢你的帮助rails 3.2.12simple_form

4

1 回答 1

1

这对我有用:

<% @fields_details = {:status => {:label => 'Status', :collection => [1,2,3,4]} } %>

<%= simple_form_for :form,  :method => :put, :url => @search_results_url  do |f| %>
  <% @fields_details.each do |field, layouts| %>
    <%= f.input field, layouts %>
  <% end %>
<% end %>

我删除了=in<%= @fields_details.each do |field, layouts| %>以防止@field_details在屏幕上呈现,然后直接将字段和布局传递给 Simple Form,无需 eval。

于 2013-06-03T02:59:05.333 回答