【问题标题】:Rails ActiveRecord::RecordNotFound in PostsController#createRails ActiveRecord::RecordNotFound in PostsController#create
【发布时间】:2013-11-26 20:10:01
【问题描述】:

谁能告诉我如何解决这个错误:?

ActiveRecord::RecordNotFound in PostsController#create

找不到没有 ID 的电影

def create
    @movie = Movie.find params[:movie_id]   #new post
    @post = @movie.posts.create params[:post]
    @post.user_id = @current_user.id
    @post.save          
    respond_to do |format|              
        format.html {redirect_to @movie}
    end

结束

我正在尝试将帖子添加到我的电影中。我在那里有文本字段,但是一旦我按下帖子就会出现。有什么建议吗?

【问题讨论】:

  • 请发布您的 PostsController#create 操作代码
  • 我编辑了我的第一篇文章并在那里添加了 create 方法。
  • 您能否包括您的new 操作代码和您的new 视图中的代码?
  • 哦,您正试图在表单中为电影添加嵌套评论。你有没有form_for [@movie, @post]

标签: ruby-on-rails


【解决方案1】:

表示参数params[:movie_id]的值为空。确保为它传递一个值。

【讨论】:

  • 这并不一定意味着params[:movie_id]为空,而是意味着没有找到记录...
  • Leo,这不正确。如果未找到记录,则异常将相同,但消息不同。在这种情况下,正是因为参数的计算结果为空字符串。
【解决方案2】:

也许您的表单视图中有一个@movie 对象。要将 id 传递给控制器​​,您可以在 ...htm.erb 文件中添加:

<%= hidden_field_tag("movie_id", @movie.id) %>

这将使用 id 填充您的 params[:movie_id] 变量

如果这没有帮助,请发布更多代码

【讨论】:

  • 仍然没有任何运气,但感谢你们的帮助
  • 请发布更多代码。我想查看您的“.​​html.erb”文件以及您的电影和帖子模型。
猜你喜欢
  • 2015-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多