如何在Rails中的控制器方法中传递变量进行渲染

yer*_*syl 4 ruby-on-rails ruby-on-rails-4

我试图传递一个变量来渲染像这样:

def monitor
  @peripheries = Periphery.where('periphery_type_name=?','monitor')
  render 'index', type: 'Monitor'
end
Run Code Online (Sandbox Code Playgroud)

这里我想在索引视图中使用'type'变量,它看起来像这样:

<%= render 'some_partial', periphery_type: type %>
Run Code Online (Sandbox Code Playgroud)

这也是一些东西.但我想使用那个'type'变量

max*_*max 6

有两种方法可以在控制器和视图之间传递变量:

实例变量

def monitor
  @peripheries = Periphery.where('periphery_type_name=?','monitor')
  @type = 'Monitor'
  render 'index'
end
Run Code Online (Sandbox Code Playgroud)

Rails会将属于控制器的任何实例变量导出到视图上下文.所以你可以@type在视图中调用或任何部分调用.

当地人

def monitor
  @peripheries = Periphery.where('periphery_type_name=?','monitor')
  render 'index', locals: { type: 'Monitor' }
end
Run Code Online (Sandbox Code Playgroud)

请注意,您需要将哈希值传递给该locals选项.您还需要将局部变量传递给部分视图:

<%= render 'some_partial', locals: { periphery_type: type } %>
Run Code Online (Sandbox Code Playgroud)

使用本地人通常是一个好主意,因为它鼓励分离,并可以使你的部分更可重用.