【问题标题】:RoR: Linking to a pageRoR:链接到页面
【发布时间】:2012-07-28 09:55:18
【问题描述】:

我正在尝试在“票证索引”上创建一个链接以链接到“编辑”页面。 (请看下图) 现在我可以输入“0.0.0.0:3000/tickets/1/edit”进入编辑页面。 但是,我不确定如何链接到此页面。 能指点一下吗?

感谢您的指导。

注意: 我正在学习 RoR 并根据 raistutorial.org 创建此页面

【问题讨论】:

    标签: ruby-on-rails ruby routes view-helpers


    【解决方案1】:

    当您按照http://guides.rubyonrails.org/routing.html 的规定,在您的config/routes.rb 中遵循使用资源丰富的路由的惯例时,您将受益于拥有可用的路径和url 助手。

    要查看可用的路径,只需运行rake routes,您将看到如下输出:

    % rake routes
    
        tickets GET    /tickets(.:format)          tickets#index
                POST   /tickets(.:format)          tickets#create
     new_ticket GET    /tickets/new(.:format)      tickets#new
    edit_ticket GET    /tickets/:id/edit(.:format) tickets#edit
         ticket GET    /tickets/:id(.:format)      tickets#show
                PUT    /tickets/:id(.:format)      tickets#update
                DELETE /tickets/:id(.:format)      tickets#destroy
    

    由此,我们可以看到有一个命名路由edit_ticket,因此我们可以使用edit_ticket_pathedit_ticket_url 帮助器(后者将包含域名,并且对于电子邮件之类的东西很有用)。

    rake routes 的输出与您在config/routes.rb 中的输出进行比较很有用,以确保您对rails 约定和资源丰富的路线有很好的理解。

    【讨论】:

    • 感谢 Ben 介绍“rake 路线”。这对我很有帮助:)
    【解决方案2】:
    <%= link_to 'edit', edit_ticket_path(ticket) %>
    

    【讨论】:

      【解决方案3】:
      <%= link_to edit_ticket_path(ticket) %>
      

      提示您如何自己发现这一点:如果您使用脚手架,show.html.erb 页面上有一个编辑链接 - 您可以将其用作交换它所指的票证实例的示例.

      注意:link_to 的 :method 选项指的是 http 方法,可以是 GET、PUT、POST、DELETE,但不能是控制器动作!

      【讨论】:

      • 感谢您的回答和关于脚手架的提示。我学到了一些新东西:)
      【解决方案4】:

      :method 属性指定 HTTP 属性,即 POST、GET、PUT、DELETE、UPDATE、HEAD 等等。

      这里需要在第二个参数中提供工单编辑链接的路径。

      可以这样做:

      <%= link_to "edit", edit_ticket_path(ticket) %>
      

      但是,当您只使用&lt;%= link_to "show", ticket %&gt; 时,Rails 会自动推断这是您想要的显示页面。

      【讨论】:

      • 非常感谢您对 :method 属性指定 HTTP 属性的回答和解释 :)
      猜你喜欢
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多