【问题标题】:Rails: URL/path with parametersRails:带参数的 URL/路径
【发布时间】:2013-06-06 05:28:45
【问题描述】:

我想生成一个网址

/swimming/students/get_times/2013-01-01/2013-02-02

从这条路线

get_class_swimming_students GET /swimming/students/get_times/:start_date/:end_date(.:format) swimming/students#get_times

如何将参数传递给get_class_swimming_students_path?

【问题讨论】:

  • 看我的回答。它可能会帮助你。谢谢。

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:
get_class_swimming_students_path('2013-01-01', '2013-02-02')

在 Rails 中,URL 参数按照它们传递的精确顺序映射到路由器。考虑以下几点:

# rake routes
my_route GET    /my_route/:first_param/:second_param/:third_param(.:format)

# my_view.html.erb
<%= link_to('My Route', my_route_path('first_param', 'second_param', 'third_param') %>
#=> <a href="/my_route/first_param/second_param/third_param">My Route</a>

还要考虑以下情况,其中foo 和bar 是位于动态参数之间的静态参数:

# rake routes
my_route GET    /my_route/:first_param/foo/:second_param/bar/:third_param(.:format)

# my_view.html.erb
<%= link_to('My Route', my_route_path('first_param', 'second_param', 'third_param') %>
#=> <a href="/my_route/first_param/foo/second_param/bar/third_param">My Route</a>

在最后一个示例中,参数将按照传递它们的顺序显示为 URL 参数,但不一定在相同的顺序中。

编辑:

下面的语法等价于第一个sn-p。主要区别在于它接受参数作为命名参数,而不是按照它们传递的顺序:

get_class_swimming_students_path(:start_date => '2013-01-01', :end_date => '2013-02-02')

【讨论】:

    【解决方案2】:

    对于任何路径,您都可以传递参数,例如

    get_class_swimming_students_path(:params1 => value1, :params2 => value2)
    

    在控制器中,您可以像往常一样简单地访问那些传递的参数

    【讨论】:

      【解决方案3】:

      尝试使用它

      get_class_swimming_students_path(:start_date => "2013-01-01", :end_date => "2013-02-02")
      

      【讨论】:

        【解决方案4】:

        你也可以像这样组合命名参数和非命名参数:

        get_class_swimming_students_path('2013-01-01', '2013-02-02', gender: 'M')
        

        【讨论】:

        • 这是我要找的那个。感谢发帖。
        【解决方案5】:

        在 rails 4 中,键入 less :

        get_class_swimming_students_path(params1: value1, params2: "value2")
        

        其中value1是一个方法,value2是一个字符串

        【讨论】:

          猜你喜欢
          • 2023-03-13
          • 1970-01-01
          • 2016-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-19
          相关资源
          最近更新 更多