Rails渲染方法需要content:参数?

时间:2018-07-16 13:46:40

标签: ruby-on-rails

Rails中的render方法有很多默认值,我找不到统一的文档。

为什么这样做:

render 'modal_new', content: @content

工作吗?我找不到content:是有效的参数名称。我相信效果类似于本地人:{content:@content}。但不确定如何!

1 个答案:

答案 0 :(得分:1)

这可能会有所帮助:http://guides.rubyonrails.org/layouts_and_rendering.html

我可能在简化事情,但是这是我看到的大部分事情的完成方式。

在控制器中,如果视图名称与同一控制器的动作/方法匹配,通常可以跳过渲染调用。但是,当控制器不匹配时,您将需要进行显式渲染调用。例如:

class ContentController < ApplicationController
  # no render needed, as the view will be `new`
  def new
    @content = Content.new
  end 

  def create
    @content = Content.new(params)
    if(@content.save)
      redirect_to @content
    else
      # because there's an error, I want to render 'new' for the user to re-enter data
      render 'new'
    end
  end
end

在视图中,通常会调用render来合并部分图像。例如,您可以这样在newedit视图之间共享表单字段:

<h1>New Content</h1>
<%= render 'form', content: @content %>
<%= link_to 'back', contents_path %>

在这种情况下,'form'引用部分app/views/content/_form.html.erb并传递本地变量content: @content

希望这对您有所帮助。