2010-12-03 21 views
31

User_id'i params içine nasıl ekleyebilirim [: sayfa] Gizli alanları kullanmak istemiyorum.Raylardaki param değişkenler için değişken ekleme

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

Bu:

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

(sen User modelinde has_many :pages var varsayar) dernek kurmak, yerine bu şekilde yapmanın

@page= Page.new(:name=>params[:page][:name], :user_id => current_user.id) 
+1

Merak ediyorum - gizli alanları kullanmakta sorun nedir? – sscirrus

+1

@sscirrus: İstemcideki HTML kaynağında gizli alanlar görülebilir. Modele (ör. UUID) hassas bilgiler eklemek istiyorsanız, alanı sunucu tarafındaki modele eklemek daha iyi olacaktır. – laker

cevap

16

gibi kullanmak için bir yolu var mı Page nesnesi için user_id otomatik olarak ayarlanır.

+1

1'den fazla yabancı anahtar eklemem gerekiyorsa nasıl çalışır? – Rails101

+3

@ Rails101: current_user.pages.build (params [: sayfa] .merge (: other_id => other_id) –

58

Bunda gün ve gün dışarı kullanın:

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

Sadece bunun sınırsız sayıda öznitelikle çalıştığını eklemek istiyorum – efalcao

+2

omg Bunu çok uzun süre aradım. – DonMB

+0

eğer bu işe yararsa (: user_id => 1) .merge (params)? – Ephraim

2

yerine current_user id birleştirmek çalışmakla, uygun modeli derneği ve ardından kapsam new() yöntem

Modelleri

inşa edebilirsiniz
class Page < ActiveRecord::Base 
belongs_to :user 
end 

class User < ActiveRecord::Base 
has_many :pages 
end 

Kontrolör

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