0

我不明白

在 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"}

4

1 回答 1

2

您创建的路线需要一个 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

这将创建正常的集合级和成员级路由(index、等),并使用该方法(您可能希望启动购买的方法是 RESTful)为show创建一个额外的成员级路由。在这两种情况下,您都需要提供 ID 并使用帮助程序来获取 URL。purchasePOST_path

于 2013-05-26T22:23:04.213 回答