首页 > 解决方案 > Rails 渲染方法接受内容:参数?

问题描述

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

为什么会这样:

render 'modal_new', content: @content

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

标签: ruby-on-rails

解决方案


这可能会有所帮助: 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

希望这一切都有帮助。


推荐阅读