首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#<#<Class:0x7a1c360>:0x7a20c38>的未定义方法`discussion_postcomments_path

#<#<Class:0x7a1c360>:0x7a20c38>的未定义方法`discussion_postcomments_path
EN

Stack Overflow用户
提问于 2013-05-09 11:08:40
回答 2查看 44关注 0票数 0

我最近添加了一个新的模型(discussion.rb)和控制器(discussions_controller.rb)。我正在尝试让帖子评论与讨论一起工作。

discussion.rb

代码语言:javascript
复制
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

以下是我在路由中的信息

代码语言:javascript
复制
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模型

代码语言:javascript
复制
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

我试着在视图中使用它,除非我在标题中显示了错误

代码语言:javascript
复制
<%= 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 %>

它说错误是由这一行引起的

代码语言:javascript
复制
 <%= form_for([discussion, @comment]) do |f| %>

有人知道我如何解决这个path问题吗?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-09 11:20:09

尝试在路由文件中合并您对resources :discussions的使用。我已经编辑了下面的内容,假设你不打算在微博下嵌套讨论。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2013-05-09 11:24:21

这一行

代码语言:javascript
复制
<%= form_for([discussion, @comment]) do |f| %>

这个discussion也应该是一个实例变量:

代码语言:javascript
复制
<%= form_for([@discussion, @comment]) do |f| %>

然后,您需要在控制器中定义@discussion

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16453682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档