2015-04-29 71 views
0

我需要找出如何設置一個form_for嵌套的路由,所以我可以在一個隱藏的字段中傳遞條形標記。對於文檔我已閱讀並看着我的form_for設置看起來是正確的,但我正在上線這個錯誤開始的form_for:爲條紋形式嵌套的資源表格

undefined method `membership_program_path' for #<#<Class:0x007fd4ef3da588>:0x007fd4f34ccf28> 

這裏是我的路線:

 resources :programs, except: [:show] do 
     resources :memberships, only: [:new, :create] 
     end 

我會員控制器:

 def new 
     @membership = Membership.new 
     @program = Program.find(params[:program_id]) 
     end 

這裏是我的整個_form.html.erb

 <%= form_for [@membership, @program] do |f| %> 
    <%= f.hidden_field :stripe_card_token %> 

    <div class="field"> 
    <%= f.label :email %> 
    <%= f.text_field :email %> 
    </div> 

    <% if @members.stripe_card_token.present? %> 
    Credit card has been provided. 
    <% else %> 
    <div class="field"> 
    <%= label_tag :card_number, "Credit Card Number" %> 
    <%= text_field_tag :card_number, nil, name: nil %> 
    </div> 
    <div class="field"> 
    <%= label_tag :card_code, "Security Code on Card (CVV)" %> 
    <%= text_field_tag :card_code, nil, name: nil %> 
    </div> 
    <div class="field"> 
    <%= label_tag :card_month, "Card Expiration" %> 
    <%= select_month nil, {add_month_numbers: true}, {name: nil, id: "card_month"} %> 
    <%= select_year nil, {start_year: Date.today.year, end_year: Date.today.year+15}, {name: nil, id: "card_year"} %> 
    </div> 
    <% end %> 
    <div id="stripe_error"> 
    <noscript>JavaScript is not enabled and is required for this form. First enable it in your web browser settings.</noscript> 
    </div> 
    <%= f.submit %> 
    <% end %> 
+0

扔你的路線(耙路線),並顯示這是特定的部分。我懷疑它可能是一對一的關係,資源與路線文件中的資源。 –

回答

0

錯誤的原因是因爲我的資源設置爲「成員身份」嵌套在「程序」下;然而,調用form_for(@membership, @program)告訴form_for您的程序嵌套在成員資格下。因此,爲什麼它尋找membership_program_path,它不存在。我顛倒了傳遞到form_for的參數的順序,它的工作原理。

+0

聽起來很準確,這在查看耙路時很明顯,因爲它會顯示membership_id/id,表明成員資格需要成爲第一個對象。 –