stu*_*kov 9 ruby-on-rails helpers
我正在使用有点宝石,并希望能够访问我的帮助器方法中的有点API(由视图和邮件程序调用以生成URL).
我在ApplicationController中的this方法中启动了一个API连接:
(有没有更适合做BTW的地方?)
class ApplicationController < ActionController::Base
before_filter :bitly_connect
def bitly_connect
Bitly.use_api_version_3
@bitly ||= Bitly.new(APP_CONFIG['bitly_username'], APP_CONFIG['bitly_api_key'] )
end
end
Run Code Online (Sandbox Code Playgroud)
默认情况下,我无法访问@bitly我的助手.你能建议一种方法来实现这一目标吗?
我找到的唯一相关线程没有帮助: Rails 3和Helper中的Controller Instance Variables
谢谢.
Ben*_*son 10
按惯例,Rails将控制器操作(和过滤器)中设置的实例变量传递给视图.辅助方法在这些视图中可用,并且应该可以访问您在控制器操作中设置的实例变量.
或者,您可以通过将变量传递给方法或使用Object#instance_variable_get方法在助手方法中设置局部变量:http://ruby-doc.org/core/classes/Object.html#M001028
# app/controllers/example_controller.rb
class ExampleController
def index
@instance_variable = 'foo'
end
end
# app/helpers/example_helper.rb
module ExampleHelper
def foo
# instance variables set in the controller actions can be accessed here
@instance_variable # => 'foo'
# alternately using instance_variable_get
variable = instance_variable_get(:@instance_variable)
variable # => 'foo'
end
end
Run Code Online (Sandbox Code Playgroud)
至于您对逻辑位置的关注,它看起来不像它属于控制器.将控制器视为应用程序的路由请求.大多数逻辑应该在模型类中执行."Skinny控制器,胖模型.":http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model