Adding variable to params in rails
How can i add user_id into 开发者_运维知识库params[:page] i don't want to use hidden fields.
@page= Page.new(params[:page])
Is there a way to use like
@page= Page.new(:name=>params[:page][:name], :user_id => current_user.id)
I use this day in and day out:
@page= Page.new(params[:page].merge(:user_id => 1, :foo => "bar"))
Instead of doing it that way, build the association (assumes you have has_many :pages
in the User
model):
@page = current_user.pages.build(params[:page])
This will automatically set user_id
for the Page
object.
Instead of trying to merge the current_user
id, you can build the proper model associations and then scope the new()
method
Models
class Page < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :pages
end
Controller
if current_user
@page = current_user.pages.new(params[:page])
else
@page = Page.new(params[:page])
end
精彩评论