2012-06-08 95 views
0

我试图提供一个表单来为features_index页面上的每个功能创建一个“消息”。不幸的是,我收到错误“找不到没有ID的功能”。将当地人传递给部分

我是否正确地通过当地人? Params似乎没有feature_id! (也许这是一个@代替时间

的特征/索引视图:

- @features.each do |feature| 
%tr 
    %td= feature.project_id 
    %td= feature.subject 
    %td= feature.details 
    %td= link_to 'Show', feature 
    %td= link_to 'Edit', edit_feature_path(feature) 
    %td= link_to 'Destroy', feature, :confirm => 'Are you sure?', :method => :delete 

    - if feature.messages.length > 0 
    - feature.messages.each do |message| 
     = render partial: "message_form", locals: {message: message} 
    - else 
    %td 
     = render partial: "message_form", locals: {message: Message.new(feature_id: feature)} 

%br/ 

的特征/ _message_form:

= simple_form_for(message) do |f| 
    = f.error_notification 

.form-inputs 
    -# = f.input :feature_id 
    -# = f.input :sender 
    -# = f.input :receiver 
    = f.input :subject 
    = f.input :details 

.form-actions 
    = f.button :submit 

和消息控制器:

def create 
@feature = Feature.find(params[:message][:feature_id]) 

@message = @feature.messages.build(params[:message]) 

respond_to do |format| 
    if @message.save 
    flash[:notice] = "Message sent!" 
    format.html { redirect_to @message, notice: 'Message was successfully created.' } 
    format.json { render json: @message, status: :created, location: @message } 
    else 
    flash[:notice] = "Message failed to send." 
    format.html { render action: "new" } 
    format.json { render json: @message.errors, status: :unprocessable_entity } 
    end 
end 
end 

谢谢!

回答

1

我相信你需要一个hidden_​​field来将feature_id的参数传递给你的创建动作。

f.hidden_input :feature_id 
+0

谢谢 - 它工作完美! (我也做了{message:Message.new(feature_id:feature.id)}的快速修复“ – Doug