2012-06-08 72 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