2

我有以下路线:

resources :organisations do
  resources :comments, only: [:create, :destroy]
  resources :events do
    resources :comments, only [:create, :destroy]
  end
end

正如 AACWT 示例的文档所建议的那样,我尝试使用以下代码为事件添加注释view/comments/_comments.html.erb

<%= form_for [commentable, Comment.new], :remote => false do |f|%>

其中,由以下人员呈现views/events/show.html.erb

<%= render :partial => "comments/comment", :locals => { :commentable => @event } %>

@event相应的控制器操作中分配的位置。

中的create方法comments_controller.rb

def create
  @commentable = Event.find(params[:commentable][:commentable_id])
  @user_who_commented = current_user
  @comment = Comment.build_from(@commentable, @user_who_commented.id, "Comment!" )
end

尽管此时这可能不正确,因为我已经尝试了许多不同的方法来使其正常工作,并且需要回到我的代码产生问题的地方。问题是它试图加载可评论的路径,在这种情况下是事件,所以它正在尝试的是event_path它应该是什么时候organisation_event_path。我如何将它传递给方法?

我的想法可能是由 procproc.new |organisation, event|或类似的东西引起的,但这就是我卡住的地方。我仍在学习 Rails 以及 ActiveRecord 中的关联是如何工作的。任何指针都将不胜感激,因为它将使我不必对结构进行大量更改并将事件作为自己的资源而不是嵌套,这会产生各种其他问题。

也就是说,理想情况下,我追求实现这一目标的最佳实践方式,所以如果确实需要改变方案,那么我想我必须这样做!

4

0 回答 0