不确定发生了什么,但我很肯定,因为我是新手,这是一个简单的答案。
因此,我使用Simple Form创建一个与Campaign模型属于关系的新Message。问题是,虽然我可以看到我在params中得到了campaign_id,但我似乎无法使用它。我正在做一系列检查,每次我都没有。
这是我的代码......
messages_controller.rb
class MessagesController < ApplicationController
def index
@messages = Message.all
end
def new
@message = Message.new
end
def create
@id = params[:campaign_id]
@campaign = Campaign.find_by id: params[:campaign_id]
end
private
def message_params
params.require(:message).permit(:campaign_id, :text)
end
end
new.html.erb
<%= simple_form_for @message do |f| %>
<%= f.association :campaign, collection: Campaign.all, label_method: :client %>
<%= f.input :text %>
<%= f.button :submit %>
<% end %>
create.html.erb(所以我可以看到发生了什么)
<%= params.inspect %><br /> <br />
<%= @id.inspect %><br /> <br />
<%= @campaign.inspect %><br /> <br />
以下是我从检查中获得的信息:
{&#34; UTF8&#34; = GT;&#34;✓&#34 ;, &#34; authenticity_token&#34; = GT;&#34; Qh75FhPN + JhDR59IlF376Ythgbk7jkgFrER0vunr / BU =&#34 ;, &#34; message&#34; =&gt; {&#34; campaign_id&#34; =&gt;&#34; 1&#34;,&#34; text&#34; =&gt;&#34;这是一个测试&#34;}, &#34;提交&#34; =&gt;&#34;创建消息&#34;,&#34;操作&#34; =&gt;&#34;创建&#34;, &#34;控制器&#34; = GT;&#34;消息&#34;}
零
零
如果需要任何其他信息,请告诉我,谢谢!
答案 0 :(得分:0)
campaign_id
嵌套在message
内。您应该像
params[:message][:campaign_id]
答案 1 :(得分:0)
您正在params
错误地访问params
HashwithIndifferentAccess
,因此要访问campaign_id
您必须先为hash
输入message
}。
params[:message][:campaign_id]
或
params['message']['campaign_id']
都会奏效。
params[:message]
#=>{"campaign_id"=>"1", "text"=>"Here is a test"}