我正在尝试在发布/显示视图中呈现回复/新视图。当我尝试
render "replies/new"
它在显示错误时向我显示
replies/_new.html.erb
当我使用时它起作用
render template: "replies/new"
但是看起来它没有在回复控制器中激活新动作,所以它没有创建新的回复。我可以在 Post show 操作中添加类似 @reply = Reply.new 的内容,但是我认为必须有更多的DRY解决方法。
答案 0 :(得分:1)
但是看起来它并没有在回复控制器中激活新动作 这样就不会创建新的回复
原因:-渲染不会创建新的HTTP请求(渲染不会加载与控制器动作相关联的任何上下文。因此,它将渲染模板),您在该新动作中可能有很多代码,但没有它将运行。仅会提供该视图。
您可以尝试
在posts#show
def show
#foo = bar
render "replies/new", locals: {reply: Reply.new}
end
通过这种方式,您也必须在replies#new
中使用局部变量
def new
#foo = bar
reply = Reply.new
render locals: {reply: reply}
end
在replies/new.html.erb
中使用reply
代替@reply