【问题标题】:Bound Parameters in Ruby on RailsRuby on Rails 中的绑定参数
【发布时间】:2012-09-10 06:38:09
【问题描述】:

我之前也问过一个与此主题相关的问题,借助该问题,我找到了我想要的名称:“bound parameters”。

通过向routes.rb 添加一个成员,我设法创建了一个类似“user/:id/dosomething”的路由。但是,这种类型的 URL 并不是我想要的解决方案。

我的问题是,您如何提供 'user/dosomething/:id' 以匹配操作用户的 dosomething 操作和 id 作为参数发送?

这里是the section I’ve read 为了得到这个想法:

3.1 绑定参数

设置常规路线时,您需要提供一系列符号 Rails 映射到传入的 HTTP 请求的一部分。其中两个符号 是特殊的::controller 映射到您的控制器的名称 应用程序,:action 映射到该应用程序中的操作名称 控制器。例如,考虑这条路线:

get ':controller(/:action(/:id))'

如果/photos/show/1的传入请求被此路由处理 (因为它没有匹配文件中任何先前的路由),那么 结果将是调用PhotosController 的显示操作,并且 使最终参数"1" 可用作params[:id]。这条路线 还将把/photos 的传入请求路由到 PhotosController#index,因为 :action:id 是可选的 参数,用括号表示。

【问题讨论】:

    标签: ruby-on-rails rails-routing


    【解决方案1】:

    您可以添加自定义路由:

    get 'user/doesomething/:id' => 'users#do_something', :as => 'do_something_user'
    

    这会将与 URL user/dosomething/:id 匹配的 HTTP GET 请求路由到 UsersControllerdo_something 操作。 :as => 'do_something_user' 部分命名路由,以便您可以使用 do_something_user_pathdo_something_user_url 帮助器生成 URL。

    有关路由的更多信息,请参阅Rails Routing from the Outside In

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 2011-07-05
      • 2011-08-04
      • 2021-09-08
      • 1970-01-01
      相关资源
      最近更新 更多