Rails:使用哈希填写表单值

时间:2012-06-06 21:57:28

标签: ruby-on-rails forms

我正在使用哈希来填写一些表格。其中之一是用户信息。我在用户注册表单中成功使用此Hash。我的想法是使用相同的Hash来填写编辑表单,如下所示:

<% NEW_USER_HASH.each do |column_name,field_info|  %>
    <div class="field">
      <% if field_info["type"] != "hidden_field" %>
          <%= f.label field_info["label"] %>
      <% end %>
      <%= f.send(field_info["type"].to_sym, column_name , :value => @user.column_name) %>
    </div>
<% end %>

但是我收到以下错误消息:

undefined method `column_name'

我尝试了以下相同的结果:

:value => @user.column_name.to_s
:value => @user.column_name.to_sym

有什么想法吗?

解答:

column_name不是@user方法,所以答案是使用send方法,变量column_name作为参数。

所以,替换:

:value => @user.column_name

使用

:value => @user.send(column_name)    

1 个答案:

答案 0 :(得分:1)

我认为罪魁祸首是@user.column_name。一种方法是使用eval(“@ user。”+ column_name)。更好的方式是我在下面显示的。

试试这个:

<% NEW_USER_HASH.each do |column_name,field_info|  %>
    <div class="field">
      <% if field_info["type"] != "hidden_field" %>
          <%= f.label field_info["label"] %>
      <% end %>
      <%= f.send(field_info["type"].to_sym, column_name , :value => @user.send(column_name)) %>
    </div>
<% end %>

让我知道这是否有效。

祝你好运!