为什么来自hash的rails中的动态视图erb文件不起作用



全部,为了动态地组成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') %>

我们正在使用"layout"的eval函数,但由于eval试图评估函数return_misc_definitions,因此这不起作用。我怎样才能逃脱这种评价?我们使用的是ruby 1.9.3rails 3.2.12simple_form。感谢您的帮助

这对我有效:

<% @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 %>

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

最新更新