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))

但也许这不是最好的方法,看看这个:Adding variable to params in rails

如果您想访问模型中的 current_user,请参阅:Rails 3 devise, current_user is not access in a Model ?

于 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 回答