ActiveRecord :: RecordNotFound找不到没有ID的Comment

时间:2013-05-29 00:03:13

标签: ruby-on-rails-3

在我的评论视图页面(show.html)上,我有一个按钮,当点击它时,将在另一个名为Repost的表中创建一行(它有一个reposts_controller和一个repost模型)。但是,当我点击评论节目页面上的图标时,我收到以下错误:

Couldn't find Comment without an ID

这是RepostsController:

class RepostsController < ApplicationController

  def create
  @comment = Comment.find(params[:id])
  @repost = @comment.reposts.build(params[:comment])
  @repost.user = current_user
    if @repost.save
      #flash[:success] = "Post created!"
      redirect_to root_url
    else
      render 'activities'
    end
  end
end

我知道问题是什么,但我正在努力解决问题。 CommentsController可以轻松找到要在显示页面上显示的注释。但是,如何将显示页面中的id发送到RepostsController,以便它可以创建上面显示的所需关系?这是一个奇怪的情况,因为按钮是 on 实际的评论页面,但由于该按钮使用不同的控制器将一行写入另一个表,该按钮无法查看/找到评论。

谢谢! -b

添加了视图:

 <%= link_to image_tag('star.png', :size => "16x16", :align => "right"), {:controller => 'reposts', :action => 'create', :id => @comment} %>

那个link_to将我发送到localhost / reposts?id = 1并且Reposts表上没有创建任何内容。

1 个答案:

答案 0 :(得分:0)

以下代码最终正常运行:

class RepostsController < ApplicationController

def index
  @reposts = Repost.all
end

  def create
   @repost= Repost.new("comment_id" => params[:comment_id],"user_id" => params[:user_id])
   @content = @repost.comments.content
    if @repost.save
      #flash[:success] = "Post created!"
      redirect_to root_url
    else
      render 'activities'
    end

  end
end

<%= link_to image_tag('purple_star.png', :size => "16x16", :align => "right"), {:controller => 'reposts', :action => 'create', :comment_id => @comment, :user_id => @comment.user}, :title=> "Pass it on!", :method=>'post' %>

感谢大家的时间和帮助!