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