form_for
を使用している場合 :
あなたの場合、Video
モデル。 Railsの規則を理解するには:
<%= form_for @video do |f| %>
...
<%= f.text_field :description %>
...
その結果、名前属性が video [description]のhtmlタグになります。 。これは、フォームが送信されると、ユーザーが入力した値が params [:video] [:description]としてコントローラーで使用できることを意味します。 。
params
変数はActiveSupport::HashWithIndifferentAccess
のインスタンスです 、Hash
のように ドキュメントによると、わずかな違いがあります:
params
のようなものです:
{"utf8"=>"✓",
"_method"=>"post",
"authenticity_token"=>"xxx",
"video"=>
{"description"=>"Video desc"}
}
"video"
の場所 または:video
ハッシュのキーの1つです。したがって、params[:video]
params.fetch("video")
と同等です {"description"=>"Video desc"}
の値 。ご覧のとおり、値は別のハッシュです。最後に、説明の値を取得するには、params[:video][:description]
を実行する必要があります (Railsの方法)またはparams.fetch("video").fetch("description")
、値は"Video desc"
。
fetch
Hash
のRubyメソッドです :"指定されたキーのハッシュから値を返します。"
これを考慮に入れて:
Video.new(params[:video]) = Video.new(:description => "Video desc") = Video.new(:description => params[:video][:description])
規則を使用する方が簡単ですが、確かにparams[:description]
を持つことができます (念のため):
<%= form_for @video do |f| %>
...
<%= text_field_tag :description %>
...
text_field_tag
を使用していることに注意してください f.text_field
の代わりに 。この場合、htmlタグ名はdescription
になります params
で { "description" => 'Video desc" }
を受け取るハッシュ ...
RailsAPIドキュメント をご覧ください。 さまざまなヘルパーなどを理解するため。また、サーバーのログを確認します。