我有这样的表格:
<%= form_for(Imagedocu.new) do |f| %>
<%= f.text_area :image %>
<%= f.text_field :patient_id, params[:id]%>
<%= f.text_field :type %>
<%= f.submit %>
<% end %>
如何看待我为其中一个输入分配值:
<%= f.text_field :patient_id, params[:id]%>
我不知道为什么,但现在我得到了错误:
undefined method `merge' for "73539":String
73539
是params [:id]!我错了什么?
答案 0 :(得分:2)
这是一个已包含对象(Imagedocu.new
)的表单,因此它直接从此对象“抓取”patient_id的值。如果要覆盖此值,请使用:
<%= f.text_field :patient_id, value: params[:id] %>
或使用等于params [:id]的患者_id初始化Imagedocu.new
:
<%= form_for( Imagedocu.new(patient_id: params[:id]) ) do |f| %>
<%= f.text_area :image %>
<%= f.text_field :patient_id %>
<%= f.text_field :type %>
<%= f.submit %>
<% end %>
但是更简洁的方法是在控制器的操作中初始化新的Imagedocu对象:
# controller
def new
@imagedocu = Imagedocu.new(patient_id: params[:id])
# etc.
# view
<%= form_for( @imagedocu ) do |f| %>
# etc.