sql >> データベース >  >> NoSQL >> MongoDB

RoR:Mongoidとフォームがハッシュを作成

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



    1. モンゴイドハッシュフィールドのクエリ

    2. ビッグデータアプリケーションにMongoDBを選択する際に考慮すべき要素

    3. reactmongofindAndUpdate関数の戻り値を取得します

    4. 未定義のメソッドMongoDB\Driver \ ReadConcern ::isDefault()の呼び出し