【发布时间】:2013-05-09 09:30:45
【问题描述】:
这是我收到的错误消息
NameError in DiscussionsController#destroy
undefined local variable or method `discussion' for #<DiscussionsController:0x598de20>
我创建了一个 DiscussionsController
class DiscussionsController < ApplicationController
def destroy
@discussion = discussion.find(params[:id])
if @discussion.present?
@discussion.destroy
end
redirect_to root_path
end
end
我正在尝试允许用户删除他们自己的讨论。 这是我用来允许删除的视图:
<% if current_user?(discussion.user) %>
<%= link_to "delete", discussion, method: :delete,
confirm: "You sure?",
title: discussion.content %>
<% end %>
当我尝试时,它会转到 http://localhost:3000/disc/7 (7 = discussion_id) 并显示该错误。
我的routes.db的一部分
resources :discussions, :path => "disc"
我该如何解决这个问题?顺便问一下, DiscussionsController 是必需的吗?我创建它只是为了定义破坏。
以下 cmets 中错误的 Postcmets 表
create_table "postcomments", :force => true do |t|
t.text "content"
t.integer "user_id"
t.integer "micropost_id"
t.timestamp "created_at", :null => false
t.timestamp "updated_at", :null => false
t.text "comment_content"
end
Postcmets 模型
class Postcomment < ActiveRecord::Base
attr_accessible :comment_content
belongs_to :user
belongs_to :micropost
validates :comment_content, presence: true
validates :user_id, presence: true
validates :micropost_id, presence: true
default_scope order: 'postcomments.created_at ASC'
end
【问题讨论】:
-
显然您的
postcomments表没有discussion_id列。但正如我所说,请再问一个问题,因为这个新问题与原来的无关。
标签: ruby-on-rails ruby