簡體   English   中英

從Rails上的注釋控制器ruby創建兩個模型的注釋

[英]Create comments for two models from comments controller ruby on rails

Ruby on Rails新手,我以前一直在使用CakePHP,想讓我的創建注釋控制器為兩個模型創建事件,請幫忙嗎?

我的評論控制器:

def create
    @event = Event.find(params[:event_id])
    @comment = @event.comments.create(params[:comment].permit(:commenter, :body))
    redirect_to event_path(@event)
  end

  def create
     @venue = Venue.find(params[:venue_id])
     @comment = @venue.comments.create(params[:comment].permit(:commenter, :body))
     redirect_to venue_path(@venue)
  end

我的創建評論視圖:

<h2>Add a comment:</h2>
<%= form_for([@event, @event.comments.build]) do |f| %>
  <p>
    <%= f.label :commenter %><br />
    <%= f.text_field :commenter %>
  </p>
  <p>
    <%= f.label :body %><br />
    <%= f.text_area :body %>
  </p>
  <p>
    <%= f.submit %>
  </p>
<% end %>

這是多態關聯的經典示例。

需要進行一些調整才能使其正常工作。

class Comment < ActiveRecord::Base
  belongs_to :commentable, polymorphic: true
  ...
end

class Venue < ActiveRecord::Base
  has_many :comments, as: :commentable
  ...
end

class Event < ActiveRecord::Base
  has_many :comments, as: :commentable
  ...
end

這將為您的注釋模型添加另一個名為commentable_type的屬性,因此您可以針對每個模型(地點,事件)更改注釋類型

您將必須運行一個看起來像這樣的遷移

  def change
    create_table :comments do |t|
      t.integer  :commenter
      t.text     :body
      t.integer :commentable_id
      t.string  :commentable_type
      t.timestamps
    end
  end

現在,當您進行遷移時,您可以轉到rails console ,看看是否嘗試

Venue.first.comments << Comment.create!(:body => "Body", :commenter => "Guy") # or commenter => 1 depending on your schema

它將作為注釋保存到數據庫,您也可以對Event執行相同的操作

現在,關於您的注釋控制器,我建議不要創建全局注釋控制器,而應該遵循RESTful方法,並讓每個控制器處理他的注釋。

IE

# routes.rb

resources :venues
  resources :comments
end

resources :events do
  resources :comments
end

這樣,您就可以根據每個控制器(地點/事件)來調整視圖,遵循RESTful方法,因為可以將其與HTML / JSON / XML一起使用,因此可以獲得更好的路由

/events/1/comments # index for all the comments for event 1 /events/1/comments/new # your add a comment form

場地也是如此。

您可以在以下網址找到有關關聯的更多信息: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM