在rails中为params添加变量

时间:2010-12-03 22:37:26

标签: ruby-on-rails

如何将user_id添加到params [:page]我不想使用隐藏字段。

@page= Page.new(params[:page])

有没有办法像

一样使用
@page= Page.new(:name=>params[:page][:name], :user_id => current_user.id)

3 个答案:

答案 0 :(得分:68)

我日复一日地使用这一天:

@page= Page.new(params[:page].merge(:user_id => 1, :foo => "bar"))

答案 1 :(得分:16)

不是这样做,而是建立关联(假设您在has_many :pages模型中有User):

@page = current_user.pages.build(params[:page])

这会自动为user_id对象设置Page

答案 2 :(得分:2)

您可以构建正确的模型关联,然后确定current_user方法的范围

,而不是尝试合并new() id。

<强>模型

class Page < ActiveRecord::Base
 belongs_to :user
end

class User < ActiveRecord::Base
 has_many :pages
end

<强>控制器

if current_user
 @page = current_user.pages.new(params[:page])
else
 @page = Page.new(params[:page])
end