Rails - 如何编写一个链接,该链接将被调用以在控制器中调用带有参数的操作?
Posted
技术标签:
【中文标题】Rails - 如何编写一个链接,该链接将被调用以在控制器中调用带有参数的操作?【英文标题】:Rails -- How to write a link which will be called to call a action with a parameter in controller ? 【发布时间】:2018-12-09 06:34:10 【问题描述】:例如,在我的控制器中:
class GymController < ApplicatoinController
def store(page)
...
end
end
现在,我想通过gym.html.slim
中的链接调用此操作:
- a ...
但是如何通过链接格式调用它,以及如何写入route.rb
文件?
【问题讨论】:
page
在你的行为定义中做了什么?我从来没有见过这样的事情。控制器操作是否带参数?
@JagdeepSingh 是的,page 只是一个参数名称。
然后您可以在您的操作中以params[:page]
的身份访问它。不要把它作为行动的论据。
【参考方案1】:
答案取决于您的商店页面是属于单个 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
和routing 的更多信息。
【讨论】:
以上是关于Rails - 如何编写一个链接,该链接将被调用以在控制器中调用带有参数的操作?的主要内容,如果未能解决你的问题,请参考以下文章
Rails:我的显示视图中的“下一篇文章”和“上一篇文章”链接,如何?