【问题标题】:Rails why routing error? No route matchesRails为什么会出现路由错误?没有路线匹配
【发布时间】:2013-05-21 18:39:38
【问题描述】:

我不明白

在 routes.rb 我写过

   match  'promotions/:id/purchase' => 'promotions#purchase', :as => :purchase_promo

在promotions_controller.rb 中我添加了:

    def purchase
    @promotion = Promotion.find(params[:id])
    respond_to do |format|
    format.html # purchase.html.erb
    format.json { render json: @promotion }
    end
    end

并在视图促销中创建一个文件 purchase.erb.html

   <div data-role="page" id="acquisto">

    <div data-role="header" data-theme="e">
    <h1>Purchase?</h1>
   </div><!-- /header -->

    <div data-role="content" data-theme="d">
    <h4>This promo costs <%= @promotion.price  %> .</h4>
    <p>bla bla bla bla bla bla bla bla bla.</p>
     <a href="index.html" data-role="button" data-rel="back" data-theme="b">Purchase       album</a>
     <a href="index.html" data-role="button" data-rel="back">No thanks</a>

     </div>

     </div><!-- /page -->

在另一个页面写

    <%= link_to 'Buy Promo',:purchase_promo ,'data-rel'=>'dialog',' data-transition'=>'slideup' %>

怎么了?

我收到路由错误

没有路线匹配 {:controller=>"promotions", :action=>"purchase"}

【问题讨论】:

  • 您的routes.rb 中有resources :promotions 行吗?
  • 是的,我已经有资源 :promotions in routes.rb
  • 我觉得应该是&lt;%= link_to 'Buy Promo', purchase_promo_path, ...
  • 我写了 purchase_promo_patch 但总是没有路线匹配 {:controller=>"promotions", :action=>"purchase"}

标签: ruby-on-rails model-view-controller view controller routing


【解决方案1】:

您创建的路线需要一个 ID。要链接到它,请使用:

link_to 'Buy Promo', purchase_promo_path(some_id)

我不清楚正确的 ID 源是什么,但根据您提供的代码,您可能想要:

<%= link_to 'Buy Promo', purchase_promo_path(@promotion) ,'data-rel'=>'dialog',' data-transition'=>'slideup' %>

您还可以通过以下方式构建这样的路线:

resources :promotions do
  member do
    post :purchase
  end
end

这将创建普通的集合级和成员级路由(indexshow 等),并使用POST 方法为purchase 创建一个额外的成员级路由(您可能希望它用于启动购买,是 RESTful 的)。在这两种情况下,您都需要提供 ID 并使用 _path 帮助程序来获取 URL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多