我有以下路线:
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
。如何将此传递给方法?
我的想法可能是通过一个触发器,proc.new |organisation, event|
或类似的东西,但这就是我被困住的地方。我还在学习Rails以及ActiveRecord中的关联如何工作。任何指针都会非常受欢迎,因为它将节省我不得不对结构进行大量更改并将事件作为自己的资源而不是嵌套,这会产生各种其他问题。
那就是说,理想情况下,我是在实现这一目标的最佳实践方式之后,所以如果确实需要更改方案,那么我想我必须这样做!