Rails - Как написать ссылку, которая будет вызываться для вызова действия с параметром в контроллере? - PullRequest
0 голосов
/ 30 июня 2018

Пример, в моем контроллере:

class GymController < ApplicatoinController
  def store(page)
     ...
  end
end

А теперь я хочу вызвать это действие по ссылке в gym.html.slim:

- a ...

а как это назвать по формату ссылки и как записать route.rb файл?

1 Ответ

0 голосов
/ 30 июня 2018

Ответ зависит от того, принадлежит ли страница вашего магазина одному Gym объекту ИЛИ его коллекции:

Для одного объекта

# app/controllers/gym_controller.rb
class GymController < ApplicatoinController
  before_action :fetch_gym

  def store
    # ...
  end

  private

  def fetch_gym
    @gym = Gym.find(params.require(:id))
  end
end

# config/routes.rb
resources :gyms, only: [] do
  get :store, on: :member
end

# gym.html.slim
= link_to 'Store', store_gym_path(@gym)

Для коллекции

# app/controllers/gym_controller.rb
class GymController < ApplicatoinController
  def store
    # ...
  end
end

# config/routes.rb
resources :gyms, only: [] do
  get :store, on: :collection
end

# gym.html.slim
= link_to 'Store', store_gym_path

Подробнее о link_to и маршрутизации здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...