2013-12-03 3 views
1

я иметь такую ​​форму:Брус правопреемником значение для ввода

<%= 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]! Что я не так?

+2

Вы должны поделиться своим контроллером и/или m odel code, так как это вероятно, где проблема. –

ответ

2

Это форма, которая уже содержит объект (Imagedocu.new), поэтому он «захватывает» значение для patient_id непосредственно из этого объекта. Если вы хотите, чтобы перезаписать это значение, используйте:

<%= f.text_field :patient_id, value: params[:id] %> 

ИЛИ инициализировать Imagedocu.new с patient_id равным Params [: ID]:

<%= 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. 
Смежные вопросы