0

我想使用 activerecord 和 rails 将控制器中的变量添加到数据库行。

为此,我现在必须在我的视图中添加一个隐藏的输入标签,其中包含添加该行的成员的用户名。然后这个标签被我的控制器拾取并添加到数据库中。

这是我隐藏的输入字段:

<% f.hidden_field(:uploader, value: @current_user.username) %> 

这是创建建筑物的代码

def create # (post) Add new records
    @bld = Building.new(params[:bld].permit(:name, :uploader, :description, :down_link))

    if @bld.save
      redirect_to my_buildings_url, :alert => 'Here\'s your new building!'
    else
      render :new
    end
end

有什么方法可以消除我隐藏的输入标签并将值@current_user.username添加到控制器中的数据库行中(如果您知道我的意思)?

4

1 回答 1

0

这将在控制器操作中完成,因为当前用户将是登录的人。因此在您的创建操作中。

def create # (post) Add new records
    @bld = Building.new(params[:bld].permit(:name, :description, :down_link))
    @bld.uploader = current_user.username

    if @bld.save
      redirect_to my_buildings_url, :alert => 'Here\'s your new building!'
    else
      render :new
    end
end

但是,您最好定义一个名为uploader的关联,它调用您的用户模型。那么你所要存储的只是一个整数。此外,您不会对 params 诡计敞开心扉。

于 2013-10-10T21:32:15.437 回答