【问题标题】:Where is the documentation on url helpers in rails?rails 中有关 url helpers 的文档在哪里?
【发布时间】:2013-07-03 21:21:15
【问题描述】:

我如何知道 url 助手在 Rails 中接受哪些参数?例如,我怎么知道 url helper 只接受下面的一个参数?我知道这些方法是元编程的,但它们的文档在哪里?

link_to "New Ticket", new_project_ticket_path(@project)

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您可以通过查看路由定义来确定路由助手需要多少参数。

    例如,你可能有这个路由文件:

    resources :users
    

    如果您在命令行中运行rake routes,您会看到如下内容:

        users GET    /users(.:format)          users#index
              POST   /users(.:format)          users#create
     new_user GET    /users/new(.:format)      users#new
    edit_user GET    /users/:id/edit(.:format) users#edit
         user GET    /users/:id(.:format)      users#show
              PUT    /users/:id(.:format)      users#update
              DELETE /users/:id(.:format)      users#destroy
    

    第一列为您提供路线的名称。您可以附加 _path_url 以获取路由助手的名称。

    第三列显示模式。在这里你可以弄清楚论点是什么。参数是以冒号为前缀的部分,可选参数显示在括号中。例如,edit_user 路由的模式 /users/:id/edit(.:format) 包含一个必需参数 (id) 和一个可选参数 (format),这告诉我我需要将至少一个参数传递给 edit_user_pathedit_user_url帮手:

    edit_user_path(1) # => "/users/1/edit"
    edit_user_path(2, :html) # => "/users/2/edit.html"
    

    您还可以将模式中的参数名称用作哈希中的键:

    edit_user_path(id: 3, format: 'js') # => "/users/3/edit.js"
    

    最后,您可以添加额外的参数,这些参数将成为查询字符串的一部分:

    edit_user_path(id: 4, format: 'json', foo: 1) # => "/users/4/edit.json?foo=1"
    edit_user_path(5, bar: 2) # => "/users/5/edit?bar=2"
    

    有关rake routes 的更多信息,请参阅Rails Routing Guide's section on Listing Existing Routes

    【讨论】:

    • 我有一条名为admin_account_reset_password 的路由,如rake routes 所示,但从ActionMailer 中调用admin_account_reset_password_url() 告诉我:“Admin::AccountMailer 的未定义方法'admin_account_reset_password_url':类” - 想法?
    • 这是一个很好的答案,但是我通读了上面的链接我找不到提到you can add extra arguments which will become part of the query string的文档,你知道我在哪里可以找到生成路径方法的API文档吗?
    【解决方案2】:

    我一般参考Rails Routing Guide

    【讨论】:

      【解决方案3】:

      这里是API doc。它包含 link_to、button_to、link_to_unless、link_to_unless_current、current_page? 和 mail_to。

      link_to(name = nil, options = nil, html_options = nil, &block)
      
      link_to(body, url, html_options = {})
      # url is a String; you can use URL helpers like posts_path
      

      选项

      :data - 此选项可用于添加自定义数据属性。

      method:HTTP 动词的符号 - 此修饰符将动态创建 HTML 表单并立即提交表单以使用指定的 HTTP 动词进行处理。对于让链接在删除记录等危险操作中执行 POST 操作(搜索机器人可以在爬取您的站点时跟踪)时很有用。支持的动词有:post、:delete、:patch 和:put。请注意,如果用户禁用了 JavaScript,则请求将回退到使用 GET。如果使用了 href: '#' 并且用户禁用了 JavaScript,则单击该链接将无效。如果您依赖 POST 行为,您应该在控制器的操作中使用请求对象的 post?、delete?、:patch 或 put? 方法来检查它。

      remote: true - 这将允许不显眼的 JavaScript 驱动程序向相关 URL 发出 Ajax 请求,而不是跟随链接。每个驱动程序都提供了用于侦听 Ajax 请求完成并在完成后执行 JavaScript 操作的机制

      数据属性

      确认:“有问题吗?” - 这将允许不显眼的 JavaScript 驱动程序提示指定的问题。如果用户接受,则链接正常处理,否则不执行任何操作。

      :disable_with - 此参数的值将用作提交表单时禁用版本的提交按钮的值。此功能由不显眼的 JavaScript 驱动程序提供。

      【讨论】:

        猜你喜欢
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 2012-08-24
        相关资源
        最近更新 更多