Передача значений options_for_select из класса модели - PullRequest
0 голосов
/ 26 апреля 2018

У меня в раскрывающемся списке приложений 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")

Как мы видим, я передаю значение value [["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 'для #

Как правильно это сделать. Спасибо за помощь.

1 Ответ

0 голосов
/ 26 апреля 2018

Ваш метод 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...