Ruby on rails Rails——如何编写一个链接,该链接将被调用以调用控制器中带有参数的操作?

Ruby on rails Rails——如何编写一个链接,该链接将被调用以调用控制器中带有参数的操作?,ruby-on-rails,hyperlink,routes,slim-lang,Ruby On Rails,Hyperlink,Routes,Slim Lang,例如,在我的控制器中: class GymController < ApplicatoinController def store(page) ... end end 但是如何按链接格式调用它,以及如何编写route.rb文件?答案取决于您的存储页面是属于单个Gym对象还是属于它的集合: 对于单个对象 #app/controllers/gym_controller.rb 类控制器

例如,在我的控制器中:

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

但是如何按链接格式调用它,以及如何编写
route.rb
文件?

答案取决于您的存储页面是属于单个
Gym
对象还是属于它的集合:

对于单个对象
#app/controllers/gym_controller.rb
类控制器<应用程序控制器
行动前:去健身房
def存储
# ...
终止
私有的
迪福健身中心
@gym=gym.find(参数要求(:id))
终止
终止
#config/routes.rb
资源:健身房,仅限于:[]do
get:store,on::member
终止
#gym.html.slim
=链接到“商店”,商店健身房路径(@gym)
收藏
#app/controllers/gym_controller.rb
类控制器<应用程序控制器
def存储
# ...
终止
终止
#config/routes.rb
资源:健身房,仅限于:[]do
get:store,on::collection
终止
#gym.html.slim
=链接到“商店”,商店路径

请在此阅读更多。

在定义您的行为时,
page
在做什么?我从未见过这样的事。控制器操作是否具有参数?@JagdeepSingh是的,页面只是一个参数名。然后您可以在操作中以
params[:page]
的形式访问它。不要把它当作行动的论据。
- a ...
# 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