0

目前正在实施线程消息传递。通过RailsCast

我已经安装了 Ancestry gem,但是我创建的所有消息都是父母。即)祖先= nil

即使在将我的 parent:id 传递给新操作之后

消息控制器

def index
  @message = Message.new
  @user = current_user
  @sent_messages = current_user.sent_messages
  @received_messages = current_user.received_messages
end

def new
  @message = Message.new
  @message.parent_id = params[:parent_id]
end

索引.html

<% for incoming in @received_messages %>
<%= render partial: "message", locals: {incoming: incoming} %>

_message.html.erb

  </div>
    <%= link_to "Reply", new_message_path(:parent_id => incoming) ,class: "regular" %>
  </div>

新的.html.erb

<%= form_for @message do |f| %>
  <p>
    To:<br />
      <%= f.hidden_field :parent_id %>
    <%= f.hidden_field :recipient, :value => (@message.parent.sender.name) %>
  </p>
  <p>
    Message<br />
    <%= f.text_area :body %>
  </p>
  <p>
    <%= submit_tag "Send Threaded Reply" %>
  </p>
<% end %>

消息.rb

class Message < ActiveRecord::Base

  attr_accessible :recipient, :subject, :body, :parent_id

  has_ancestry

end

创建消息后我的控制台:

关键点 - 我在 Message 中传递了 parent_id (144),但是祖先仍然以 nil 传递。

 Parameters: {"utf8"=>"✓", "authenticity_token"=>"gKVr06oT+6OcAERHAzSX79vTlJLniofmEOjZPdZmfwM=", "message"=>{**"parent_id"=>"114"**, "recipient"=>"Rach Miller", "body"=>"meh and more meh"}, "commit"=>"Send Threaded Reply"}
  User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 17 LIMIT 1
  User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."name" = 'Rach Miller' LIMIT 1
   (0.2ms)  BEGIN
  SQL (0.7ms)  INSERT INTO "messages" ("ancestry", "body", "created_at", "read_at", "recipient_deleted", "recipient_id", "sender_deleted", "sender_id", "subject", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING "id"  [["ancestry", nil], ["body", "meh and more meh"], ["created_at", Tue, 20 Aug 2013 03:14:15 UTC +00:00], ["read_at", nil], ["recipient_deleted", false], ["recipient_id", 18], ["sender_deleted", false], ["sender_id", 17], ["subject", nil], ["updated_at", Tue, 20 Aug 2013 03:14:15 UTC +00:00]]
4

1 回答 1

1

在Bigxiang的评论之后,我决定看看我的create函数。

我一直在单独传递我的参数,所以使用

@message.parent_id = params[:message][:parent_id]为我工作

干杯

于 2013-08-20T04:49:02.690 回答