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

Railsフォームを使用してMongoidのサブコレクションにアクセスし、新しいエントリを編集および作成します

    次の作業例のように、埋め込みモデルにフォームヘルパー「fields_for」を使用してみてください。これがお役に立てば幸いです。

    タイプミスや矛盾を解消するのに時間がかかりました。今後、より迅速な回答が必要な場合は、質問をできるだけ正確かつ最小限に抑えてください。

    class Californium
      include Mongoid::Document
      field :name
      field :license_type
      embeds_one :address
    end
    
    class Address
      include Mongoid::Document
      field :street
      field :city
      field :state
      field :zip
      embedded_in :california, :inverse_of => :address
    end
    

    app / views / edit.html.erb

    <%= form_for :californium do |f| %>
    
        <div class="field">
          <%= f.label :name %>
          <br/>
          <%= f.text_field :name %>
        </div>
        <div class="field">
          <%= f.label :license_type %>
          <br/>
          <%= f.text_field :license_type %>
        </div>
    
        <%= fields_for @californium.address do |af| %>
            <div class="field">
              <%= af.label :street %>
              <br/>
              <%= af.text_field :street %>
            </div>
    
            <div class="field">
              <%= af.label :city %>
              <br/>
              <%= af.text_field :city %>
            </div>
        <% end %>
    
        <div class="actions">
          <%= f.submit %>
        </div>
    
    <% end %>
    

    config / routers.rb

      match 'california/:id' => 'california#edit', via: :get
      match 'california/:id' => 'california#update', via: :post
    

    test /functional / california_controller_test.rb

    require 'test_helper'
    
    class CaliforniaControllerTest < ActionController::TestCase
      def setup
        Californium.delete_all
      end
    
      test "form" do
        cal = Californium.create(name: 'Benjamin Spock', license_type: 'MD', address: Address.new(street: '311 Temple St', city: 'New Haven', state: 'CT', zip: '06511'))
        assert_equal(1, Californium.count)
        p Californium.find(cal.id)
        get :edit, id: cal.id
        assert(assigns(:californium))
        assert_response(:success)
        puts @response.body
      end
    end
    



    1. SpringMongoDBクエリの並べ替え

    2. c#ドライバーを使用してmongodbドキュメント内のネストされた配列要素を削除するにはどうすればよいですか?

    3. MongoDB内/からのJavaScriptオブジェクトの保存と取得

    4. マングースを介してdb.eval()を呼び出す方法は?