我正在使用哈希来填写一些表格。其中之一是用户信息。我在用户注册表单中成功使用此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)
答案 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 %>
让我知道这是否有效。
祝你好运!