在我的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
答案 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])
。