访问其他控制器中的实例变量

时间:2014-04-26 09:45:40

标签: ruby-on-rails ruby accessor

我有两个控制器coordinatesphotoexifdatas,我想访问photoexifdatas内的coordinates中的一个实例变量。这是我的代码:

photoexifdatas_controller.rb

class PhotoexifdatasController < ApplicationController
skip_before_filter  :verify_authenticity_token
attr_accessor :photoexifdatas
attr_accessor :pc

def index
    @pc = Photoexifdata.find(1);
$pcd = Photoexifdata.find(1).lattitude;
    @photoexifdatas = Photoexifdata.all
respond_to do |format|
    format.html
    format.json {render json: @photoexifdatas }

end
end

def create

@lattitude = params[:lattitude]
@longitude = params[:longitude]
p = Photoexifdata.new 
p.lattitude =  @lattitude
p.longitude =  @longitude
p.save
redirect_to '/photoexifdatas'
end
end

当我在 views / coordinates / index.html.erb 中执行<%= puts PhotoexifdatasController.pc %>时 它没有打印出来。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

当您在 views / coordinates / index.html.erb 中执行<%= puts PhotoexifdatasController.pc %>时,会发生什么情况是您尝试访问PhotoexifdatasController类的pc方法(你实际上并没有在PhotoexifdatasController类的实例上调用它。)

当您想要从另一个控制器访问一个控制器的实例变量时,这不是一个好主意。我建议如果您想要访问Photoexifdata中的CoordinatesController模型,只需执行Photoexifdata.find(1)之类的常规查询,并将其分配到CoordinatesController中的实例变量中。您始终可以访问CoordinatesController中的任何模型实例。