いくつかのフォームに入力するためにハッシュを使用しています。その1つがユーザー情報です。このハッシュをユーザー登録フォームで正常に使用しています。次のように、同じハッシュを使用して編集フォームに入力するというアイデアでした。
<% 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メソッドではないため、答えは、変数column_nameをパラメーターとして使用してsendメソッドを使用することです。
したがって、次を置き換えます。
:value => @user.column_name
と
:value => @user.send(column_name)