我在我的rails应用程序中有一个下拉列表。
= form_tag({:controller=>"r4c", :action=>"result"}, method: :get) do
= label_tag(:q, "Trip Type: ")
= select_tag(:q, options_for_select([["Single load completed trip", "r4c_001"]]), class:"select")
= submit_tag("Get Test Details")
正如我们所看到的,我将值[[“Single ....]]值直接传递给options_for_select。我试图从另一个类中获取此值,说一个模型,我创建了一个模型类。
require 'active_record'
class R4cOptionsModel < ActiveRecord::Base
def country_options
return [["Single load completed trip", "r4c_001"]]
end
end
和视图表单
= select_tag(:q, options_for_select(R4cOptionsModel.country_options), class:"select")
但是我收到一条错误消息
#
的未定义方法`country_options'
这样做的正确方法是什么。谢谢你的帮助。
答案 0 :(得分:1)
您的方法country_options
被定义为类R4cOptionsModel
中的实例方法。因此,要么在视图中调用此类的对象:
= select_tag(:q, options_for_select(@r4c_option_model.country_options), class:"select")
或者,如果您的选项更加静态,请使用self
将方法定义为类方法:
class R4cOptionsModel < ActiveRecord::Base
def self.country_options
[["Single load completed trip", "r4c_001"]]
end
end
...并保持视图代码不变。
如果仅在视图中需要这些选项值,请使用此方法。在ApplicationHelper
或任何其他帮助程序模块中定义它。
module ApplicationHelper
def country_options
[["Single load completed trip", "r4c_001"]]
end
end
和观点:
= select_tag(:q, options_for_select(country_options), class:"select")