2017-10-05 7 views
2

私はレールプロジェクトに取り組んでおり、私は奇妙に思える何かを見つけました。隠しフィールドターゲットがモデルの属性である必要があるのはなぜですか?

f.text_field :thing_that_doesnt_exist 

は私にエラーを与える:私は私のビューでフォームを持っている、そしてモデルが必要な属性を持っていない場合f.text_fieldなどの任意の通常のフィールドのために、私は例えば、エラーが発生します

undefined method `thing_that_doesnt_exist' for #<Model:0x007f7d00b809a0> 

しかし:

f.hidden_field :thing_that_doesnt_exist 

は私にエラーを与えていないと私はなぜ、確かにそれはテキストフィールドと同じように動作すべきかわかりません。もし誰かが私がここで何が起こっているのか理解するのを助けることができれば、私はそれを高く評価します。

+0

完全なエラーメッセージを表示できますか? – thanhnha1103

+0

あなたのモデルでput att_accessor:thing_that_doesnt_exist – krishnar

+1

私は私の質問で述べたように、私の混乱は、 'f.hidden_​​field:thing_that_doesnt_exist'が同じエラーを出さないという事実から来ていると私は理解しています。 – user2320239

答えて

1

ケース1:ケース2

<%= f.hidden_field :thing_that_doesnt_exist, :value => "x" %> 
<%= hidden_field_tag 'thing_that_doesnt_exist', "x" %> 

エラーなく動作:値が記載されていない場合は(それが存在しない属性名を呼び出すようにしようとすると)

<%= f.hidden_field :thing_that_doesnt_exist%> 
<%= hidden_field_tag 'thing_that_doesnt_exist'%> 

エラーをスローします事例3:既存のフィールドのための作品thing_that_does_exist

<%= f.hidden_field :thing_that_does_exist%> 
<%= hidden_field_tag 'thing_that_does_exist'%> 
+0

例に欠陥があることをよく知っています。 – max

関連する問題