无法为输入分配值

时间:2013-12-03 20:34:58

标签: ruby-on-rails ruby ruby-on-rails-3

我有这样的表格:

<%= 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]!我错了什么?

1 个答案:

答案 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.