【问题标题】:Rails: Using form tags inside libRails:在 lib 中使用表单标签
【发布时间】:2010-03-17 05:53:03
【问题描述】:

所以我的 lib/ 文件夹中有这段代码:

class GlobalConfig::SetHelper
  def self.yes_no_input(configuration)
    value = configuration.value
    name = configuration.name
    "#{radio_button_tag name, true, (value == true), {:id => "#{name}_yes"}} #{label_tag "#{name}_yes", 'yes'}
     #{radio_button_tag name, false, (value.blank? or value == false), {:id => "#{name}_no"}} #{label_tag "#{name}_no", 'no'}"
  end
end

但它返回了: GlobalConfig::SetHelper:Class 的未定义方法“radio_button_tag” 当我运行代码时。

我该如何解决这个问题。有人吗?

谢谢

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:
    1. 你为什么要把这个放到libapp/helpers 是放置此类辅助方法的标准位置。
    2. 将辅助方法作为辅助类的类方法不是可行的方法。您应该将其设为实例方法。然后将此代码放入您的控制器中:

      helper GlobalConfig::SetHelper

      并且您可以在视图中访问其方法。像radio_button_tag 这样的标准辅助方法也将立即起作用。

    【讨论】:

    • 我知道这样做是小菜一碟,这就是我现在正在做的事情,直到找到解决方案。基本上,我的站点将具有我在数据库中定义的各种配置设置(因此非程序员站点管理员可以轻松更改它们)。一些配置并不简单,例如国家需要一个国家选择器,但对于大多数其他事情可以用文本输入来完成。为了方便其他程序员(或我自己)添加新的输入样式,我将函数封装到 lib 文件夹 config/set_helpers 和 config/get_helpers 中。那么这可能吗?
    【解决方案2】:

    你需要在你的助手中包含这个方法的助手:

    
    class GlobalConfig::SetHelper
      include ActionView::Helpers::FormTagHelper
    end
    

    【讨论】:

    • 我想我之前尝试过,但我会再试一次,也许我写错了。我会告诉你的!
    • 代码太大,我没有时间检查这个,如果有人可以验证将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    相关资源
    最近更新 更多