2

フォームを使用して、コントローラーのある部分から別の部分 (作成するのは初めて) にデータを転送していますが、問題が発生しています。フォームを送信した後にデータを取得しようとすると、nil 値が返されます。

フォームコードは次のとおりです。

<%= f.hidden_field :owner_id, :value => @tool.user_id %>
<%= f.hidden_field :tool_id, :value => @tool.id %>
<%= f.hidden_field :borrower_id, :value => current_user.id %>

そして、これはコントローラの create アクションです:

  def create
    render text: params[:rental_agreement].inspect
    @rental_agreement = RentalAgreement.create
    @rental_agreement.owner_id = params[:owner_id]
    # render text: @rental_agreement.inspect
  end

フォームの [送信] ボタンをクリックすると、次のように表示されます。

{"owner_id"=>"3", "tool_id"=>"1", "borrower_id"=>"4"}

それは問題ありませんが、どのインスペクションがレンダリングされるかを変更すると (一番上の行をコメントアウトし、一番下のコメントを外します)、表示されるのは次のとおりです。

#

Rails コンソールでこのオブジェクトを見ると、その中のすべてのフィールドが nil になっています (id フィールドと created_at フィールドを除く)。

フォームの変数 (owner_id、tool_id、brower_id) を Rental_agreement 変数に割り当てる方法を見つけようとしています。どんな助けでも大歓迎です!

4

1 に答える 1

2

create メソッドが間違っているようです。これを試して。

def create
  @rental_agreement = RentalAgreement.new(params[:rental_agreement])
  @rental_agreement.save
end
于 2012-12-19T22:38:10.143 に答える