0

在我的 Rails 应用程序中,我有一个操作(def do_some_stuff),但我首先想在更新我的帖子之前更新我的帖子,如果它成功,它将完成“做事”......简单,对吗?

这是我的行动

def do_some_stuff
  Rails.logger.debug "Post id is #{@post.id}"
  update #calls the update action
  ## does some stuff
end

Rails 没有更新,而是向我抛出了这个错误:“缺少必需的参数:post”(意思是 'post' 是 nil,对吗?)

我在我的记录器中获得了帖子 ID,但由于某种原因,它给了我这个错误。

为了简单起见,我决定尝试在“do_some_stuff”操作中调用更新操作。顺便说一句,我正在使用 strong_params

如何从另一个动作中调用“更新”动作?

先感谢您。任何帮助将不胜感激。


我在手机上输入了这个,对于任何错别字,我深表歉意


我的日志:由 PostsController#do_some_stuff 处理为 HTML 参数:id = 149

4

1 回答 1

2

你不应该从另一个动作中调用一个动作。相反,只需致电update_attributes帖子:

def do_some_stuff
  if @post.update_attributes(params[:post])
    ## do some stuff
  end
end

如果成功,update_attributes将返回 true 并执行“做一些事情”块。

这假设您已经有@post礼物。通常你会在一个before_filter带有 find: 的块或方法中得到它@post = Post.find(params[:id])

于 2013-07-25T22:14:32.680 回答