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ドキュメント をご覧ください。 さまざまなヘルパーなどを理解するため。また、サーバーのログを確認します。