从Rails 4中的另一个控制器渲染动作模板

时间:2018-08-14 10:27:03

标签: ruby-on-rails ruby-on-rails-4

我正在尝试在发布/显示视图中呈现回复/新视图。当我尝试

render "replies/new" 

它在显示错误时向我显示

replies/_new.html.erb

当我使用时它起作用

render template: "replies/new"

但是看起来它没有在回复控制器中激活新动作,所以它没有创建新的回复。我可以在 Post show 操作中添加类似 @reply = Reply.new 的内容,但是我认为必须有更多的DRY解决方法。

1 个答案:

答案 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