我想使用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
的值添加到控制器的数据库行中(如果你知道我的意思)?
答案 0 :(得分: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欺骗。