如何在Rails

时间:2015-06-07 12:42:42

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

我正在尝试传递一个变量来渲染:

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

我想在这里使用'输入'索引视图中的变量看起来像这样:

<%= render 'some_partial', periphery_type: type %>

也会渲染一些东西。但我想用那种&#39;类型&#39;变量

3 个答案:

答案 0 :(得分:5)

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

实例变量

def monitor
  @peripheries = Periphery.where('periphery_type_name=?','monitor')
  @type = 'Monitor'
  render 'index'
end

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

当地人

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

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

<%= render 'some_partial', locals: { periphery_type: type } %>

使用本地人通常是一个好主意,因为它鼓励脱钩并且可以让你的部分更加可重复使用。

答案 1 :(得分:1)

在monitor方法中,您可以将类型变量传递给索引视图,例如

def monitor
  @type = 'monitor'
  @peripheries = Periphery.where('periphery_type_name = ?', @type)
  render 'index'
end

并在您的视图中

<%= render 'some_partial', locals: {periphery_type: @type}

(注意这不是设置类型变量的好方法,我需要更好地理解该类以建议如何设置该变量。)

答案 2 :(得分:1)

您可以使用redirect_to some_path(params: params)