Как сделать так, чтобы атрибут value в теге выбора select имел ссылки в рельсах - PullRequest
0 голосов
/ 12 июня 2019

Я хочу, чтобы атрибут значения в меню параметров выбора содержал URL-адреса, а при щелчке должен быть указан конкретный путь. Я использую вспомогательный метод для построения пути

Код:

<%= select_tag :account, options_from_collection_for_select(Account.all,build_path_for_airline(id),"name") %>

helper:

def build_path_for_airline(id)
      new_path = Rails.application.routes.recognize_path(request.path)
      new_path[:airline_id] = id
      new_path
    end

К сожалению, он не работает должным образом, может кто-нибудь дать мне знать, что мне здесь не хватает?

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

Согласно документации , параметр value_method - это именно метод. Вы не можете использовать произвольный блок кода и ожидать, что он будет работать.

Вы должны реализовать свой build_path_for_airline как вспомогательный метод в своем классе модели и использовать этот метод в вызове options_from_collection_for_select.

# app/models/account.rb

class Account
  # ...
  def airline_path
    # Build the airline path for the current account
  end
end
# app/views/...

<%= select_tag :account, options_from_collection_for_select(Account.all, :airline_path, :name) %>
1 голос
/ 12 июня 2019

Ответ Ричарда-Дегенна правильный, но есть альтернатива использованию метода в вашей модели.options_from_collection_for_select также может принимать лямбду в качестве аргумента value_method:

<%= select_tag :account, options_from_collection_for_select(
      Account.all,
      ->(account){ build_path_for_airline(account.id) },
      "name")
%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...