简单形式和返回的参数

时间:2014-05-15 15:14:18

标签: ruby-on-rails simple-form

不确定发生了什么,但我很肯定,因为我是新手,这是一个简单的答案。

因此,我使用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;}

     

     

如果需要任何其他信息,请告诉我,谢谢!

2 个答案:

答案 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"}