我最近添加了一个新的模型(discussion.rb)和控制器(discussions_controller.rb)。我正在尝试让帖子评论与讨论一起工作。
discussion.rb
class Discussion < ActiveRecord::Base
belongs_to :user
has_many :postcomments, dependent: :destroy
validates :user_id, presence: true
validates :content, presence: true
attr_accessible :content, :user_id
default_scope order: 'discussions.created_at DESC'
end以下是我在路由中的信息
resources :discussions, :path => "disc"
resources :users do
member do
get :following, :followers
end
end
resources :sessions, only: [:new, :create, :destroy]
resources :microposts, only: [:create, :destroy]
resources :discussions, only: [:create, :destroy]
resources :relationships, only: [:create, :destroy]
resources :microposts do
resources :postcomments
resources :discussions do
resources :postcomments
end
end这里是postcomments模型
class Postcomment < ActiveRecord::Base
attr_accessible :comment_content
belongs_to :user
belongs_to :micropost
belongs_to :discussion
validates :comment_content, presence: true
validates :user_id, presence: true
default_scope order: 'postcomments.created_at ASC'
end我试着在视图中使用它,除非我在标题中显示了错误
<%= form_for([discussion, @comment]) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_field :comment_content %>
</div>
<div class="ItemContainer">
<div class="ItemInput">
<button class="btn" type="submit">
Comment
</button>
</div><div class="ItemCommentCount">
<% end %>它说错误是由这一行引起的
<%= form_for([discussion, @comment]) do |f| %>有人知道我如何解决这个path问题吗?
class PostcommentsController < ApplicationController
def create
@micropost = Micropost.find(params[:micropost_id])
@comment = Postcomment.new(params[:postcomment])
@comment.micropost = @micropost
@comment.user = current_user
if @comment.save
redirect_to(:back)
else
render partial: 'shared/_postcomment_form', locals: { micropost: @micropost }
end
end
def createdisc
@discussion = Discussion.find(params[:discussion_id])
@comment = Postcomment.new(params[:postcomment])
@comment.discussion = @discussion
@comment.user = current_user
if @comment.save
redirect_to(:back)
else
render partial: 'shared/_postcomment_form', locals: { discussion: @discussion}
end
end
end发布于 2013-05-09 11:20:09
尝试在路由文件中合并您对resources :discussions的使用。我已经编辑了下面的内容,假设你不打算在微博下嵌套讨论。
resources :discussions, only: [:create, :destroy], path: "disc" do
resources :postcomments
end
resources :users do
member do
get :following, :followers
end
end
resources :sessions, only: [:new, :create, :destroy]
resources :microposts, only: [:create, :destroy]
resources :relationships, only: [:create, :destroy]
resources :microposts do
resources :postcomments
end发布于 2013-05-09 11:24:21
这一行
<%= form_for([discussion, @comment]) do |f| %>这个discussion也应该是一个实例变量:
<%= form_for([@discussion, @comment]) do |f| %>然后,您需要在控制器中定义@discussion
https://stackoverflow.com/questions/16453682
复制相似问题