0

ネストされた属性 message.rb があります

  class Message < ActiveRecord::Base
    belongs_to :trip  
    attr_accessible :name, :email, :subject, :body
  end

trip.rbに属するもの

  class Trip < ActiveRecord::Base
    has_many :messages 
    accepts_nested_attributes_for :messages, :allow_destroy => true
    attr_accessible :messages_attributes
  end

messages_controller.rb

  class MessagesController < ApplicationController   
   def create
     @trip = Trip.find(params[:trip_id])
     @message = @trip.messages.create(params[:message])
     redirect_to trip_path(@trip)
   end
  end

メッセージフォームは \trips\show.html.erb にあります

  <%= form_for([@trip, @trip.messages.build]) do |f| %>
   <div class="field">
     <%= f.label :name%><br />
     <%= f.text_field :name %>
   </div>
   <div class="field">
     <%= f.label :email %><br />
     <%= f.text_field :email %>
   </div>

   <div class="field">
    <%= f.label :subject %><br />
   </div>

   <div class="field">
    <%= f.label :body %><br />
    <%= f.text_area :body %>
   </div>

   <div class="actions">
    <%= f.submit %>
    </div>
   <% end %>

\trips\show.html.erb にも表示されるはずです

   <h2>Messages</h2>
     <% @trip.messages.each do |message| %>
   <p>
   <b>NAme:</b>
     <%= message.name %>
   </p>
    <b>Email:</b>
     <%= message.email %>
   </p>
     <b>Subject:</b>
     <%= message.subject %>
   </p>
     <b>Message:</b>
     <%= message.body %>
   </p>
   <% end %>

問題は、そうではないということです。

私の開発ログ。

, "id"=>"44"} [1m[35mTrip Load (0.0ms)[0m SELECT "trips".* FROM "trips" WHERE "trips"."id" = ? LIMIT 1 [["id", "44"]] [1m[36mCategory Load (0.0ms)[0m [1mSELECT "categories".* FROM "categories" INNER JOIN "categories_trips" ON "categories"."id" = " category_trips"."category_id" WHERE "categories_trips"."trip_id" = 44[0m [1m[35mLocation Load (0.0ms)[0m SELECT "locations".* FROM "locations" WHERE> "locations"."id" = 18 LIMIT 1 [1m[36mCACHE (0.0ms)[0m [1mSELECT "trips".* FROM "trips" WHERE "trips"."id" = ? LIMIT 1[0m [1m[35mImage Load (1.0ms)[0m SELECT "images".

理由はよくわかりませんが、attr_accessible を設定しました。手伝ってくれますか ?ありがとう!

アップデート

Railsコンソールを介して動作します:

irb(main):019:0> first_trip.messages.create(name: "emils2") ←[1m←[35mSQL (2.0ms)←[0m INSERT INTO "messages" ("body", "created_at", "email ", "name", "subject", "trip_id", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?) [[" body", nil], ["created_at", 水, 2012 年 8 月 1 日 13:52:29 UTC +00:00]、["email"、nil]、["name"、"emils2"]、["subject"、nil]、["trip_id"、32]、[ "updated_at"、水曜日、2012 年 8 月 1 日 13:52:29 UTC +00:00]]

32、created_at: "2012-08-01 13:52:29"、updated_at: "2012-08-01 13:52:29">

そして、私のroutes.rbもネストされました:

resources :trips do
 resources :messages
end
4

0 に答える 0