代码之家  ›  专栏  ›  技术社区  ›  Prakadeessh Arunachalam

存储rails表单的下拉选项&只使用该表单中的变量

  •  2
  • Prakadeessh Arunachalam  · 技术社区  · 8 年前

    我正在构建一个rails应用程序。

    我有下拉字段,在不同的表单中有相同的选项。我想将选项存储在单独的位置,只使用下拉字段中的变量,而不是在每个表单中键入选项。

    请用一小段代码片段帮我,或给我指出一个代码库

    1 回复  |  直到 8 年前
        1
  •  1
  •   ReggieB    8 年前

    rails辅助对象方法 select

    使用 选择 ,然后需要在对象中定义可用于应用程序相关部分的数据。一种方法是使用模块。例如:

    module DropDownOptions
      def number_options
        {"One" => 1, "Two" => 2, "Three" => 3}
      end
    
      def foo_options
        {"Foo" => "Bar"}
      end
    end
    

    然后,您需要将该代码放在应用程序文件夹中。我会把它放进去 app/tools/drop_down_options.rb 如果没有比这更明显的地方。

    然后您可以将其添加到助手:

    module ApplicationHelper
      include DropDownOptions
    end
    

    这将允许您在视图中执行此操作:

    <%= select("post", "number_id", number_options) %>
    

    class Post << ActiveRecord::Base
      include DropDownOptions
    end
    

    然后是 number_options 方法将在post实例中可用。允许您这样做:

    class Post << ActiveRecord::Base
      include DropDownOptions
    
      def number_label
        number_options.invert[number_id] if number_id?
      end
    end
    

    通过将选项放入模块中,您可以在任何需要的地方使用它们。例如,如果您喜欢用户演示者或装饰者而不是助手方法,那么只需在这些对象中包含模块。