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中找到链接的正确路径

Rails:我的显示视图中的“下一篇文章”和“上一篇文章”链接,如何?

通用链接:如何以编程方式返回?

如何使用链接/按钮更改列属性 - Ruby on Rails

如何在 JQuery 中格式化 URL.Action() 调用以设置链接的 href 属性?