Rails 3:使用render动作将实例变量从控制器传递到不同的视图

时间:2013-08-26 20:34:38

标签: ruby-on-rails ruby-on-rails-3

我有一个控制器(RoadsController)更新操作,我用它来调用不同的视图(views / road_surface / crop.html.erb)。为了满足其他项目要求,我需要将此文件保存在不同的视图中:

def update
  @road = Road.find params[:id]

  if @road.update_attributes params[:road]
    if params[:road][:road_surface].present?
      render "road_surface/crop" #I'd like to pass @road to my road_surface view here
    else
      redirect_to road_path @road.id
    end
  else
    render : action => 'edit'
  end
end

我需要将@road实例变量传递给road_surface视图。我已经阅读了关于渲染的这条教学:http://guides.rubyonrails.org/layouts_and_rendering.html但找不到我要找的东西。这看起来很简单,但我绝对是一个Rails noob,所以我想我要么缺少一些明显的东西,要么就是错误的方式。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

@road是控制器的实例变量。调用的控制器方法中的所有实例变量都可以在被调用的视图中使用。

只需在视图中执行<%= @road.inspect %>,您就会看到它打印模型实例的属性。

相关问题