Rails:你如何从另一个动作中调用'update'

时间:2013-07-25 22:06:12

标签: ruby-on-rails

在我的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”为零,对吗?)

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

为了简单起见,我决定尝试在'do_some_stuff'动作中调用更新动作。我正在使用strong_params btw

如何从其他操作中调用“更新”操作?

提前谢谢你。任何帮助将不胜感激。


我在手机上打了这个,很抱歉提前打印错误


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

1 个答案:

答案 0 :(得分:2)

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

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

如果成功,update_attributes将返回true并执行“do some stuff”块。

这假设您已经有一个@post。通常情况下,您会在before_filter块或方法中使用find:@post = Post.find(params[:id])