Rails clear_helpers仅用于特定的控制器操作?

时间:2012-06-07 10:13:27

标签: ruby-on-rails ruby

我目前正在开发一个Rails项目,我正在构建一个使用json_builder的视图来使用Layar API,如下所示:

layer "Layer name"
errorString "ok"
errorCode 0
hotspots @inspections do |inspection|
    id inspection.slug
    anchor do
        geolocation do
            lat inspection.lat
            lon inspection.lng
        end
    end
    text do
        title inspection.name
        description "#{inspection.rating} out of 5"
        imageURL "http://my-url.com/assets/rating#{inspection.rating}.png"
    end
end

但是,当我在浏览器中加载此视图时,我的JSON的title部分不会出现。我已经设法将其缩小到我的layout_helper文件中的帮助方法(我一直在使用漂亮的生成器),也称为title。由于我不需要这个帮助器,有没有办法只为这个特定的控制器动作运行clear_helpers?或者有更简洁的方法吗? (我对Rails很新,你可能会说!)

2 个答案:

答案 0 :(得分:1)

理论上,您应该能够在控制器中执行以下操作:

class SomethingController < ApplicationController
  helper :layout, :except => :show # Or whatever action you want to skip here

修改

显然Rails不支持辅助方法,不像所有类似的方法。不幸的是,似乎没有办法改变每个动作加载哪个助手。我正在使用的一个想法是强制取消注册每个控制器操作的特定帮助程序,但它并不漂亮。

相关API文档:http://api.rubyonrails.org/classes/AbstractController/Helpers/ClassMethods.html

答案 1 :(得分:0)

我最终将有问题的帮助方法重命名为pagetitle并更改了我的观点。有时最简单的解决方案最简单!