我正在使用哈希来填写一些表格。其中之一是用户信息。我在用户注册表单中成功使用了这个哈希。想法是使用相同的 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)