5

コントローラーで作成アクションがあります

  def create

    params[:note]
    @note = current_user.notes.new(params[:note])

      if @note.save
        respond_with @note, status: :created
      else
        respond_with @note.errors, status: :unprocessable_entity
      end
  end

current_userと呼ばれる別のパラメーターをモデルに渡したいのですが、それを行う方法と、モデルメソッドで渡されたパラメーターを取得する方法を教えてください。

4

2 に答える 2

3
@note = Note.new(params[:note].merge(:user_id => current_user.id))

しかし、おそらくこれはあなたがそれを行う最良の方法ではありません、これを見てください:railsのparamsに変数を追加する

モデルでcurrent_userにアクセスする場合は、「Rails 3 devise、モデルでcurrent_userにアクセスできませんか? 」を参照してください。

于 2012-05-02T17:48:59.387 に答える
1

通常、hidden_​​fieldを使用してこれを行います。

したがって、作成ビューで、current_userを非表示フィールドとして追加します。

<%= form_for @note do |f| %>
  # all your real fields
  <%= f.hidden_field :current_user current_user %>
<% end %>

次に、作成コントローラーでparams [:note] [:current_user]が定義され、モデルに「current_user」という属性があると仮定してモデルに追加されます。

于 2012-05-02T17:42:14.093 に答える