2012-06-07 43 views
2

在我的軌道項目中,我得到以下錯誤,當我查看/subscription/new路徑錯誤:軌道3 - 使用的form_for上的資源時

NoMethodError in Subscriptions#new 

Showing /redacted/app/views/subscriptions/new.html.erb where line #4 raised: 

undefined method `subscriptions_path' for #<#<Class:0x007fd02c8bbb28>:0x007fd0308f7a48> 

Extracted source (around line #4): 

1: <div class="grid_6"> 
2: <h1>New Subscription</h1> 
3: <p> 
4:  <%= form_for @subscription, :html => { class: 'form_dark' } do |f| %> 
5:  <% if @subscription.errors.any? %> 
6:   <div class="error_messages"> 
7:   <h1><%= pluralize(@subscription.errors.count, "error") %> prohibited this subscription from being saved:</h1> 

我的路線文件包含resource :subscription這一點。

附加代碼信息:

用戶模式:

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 

    attr_accessible :email, :password, :password_confirmation, :remember_me 

    has_one :subscription 
end 

訂閱模式:

class Subscription < ActiveRecord::Base 
    attr_accessible :status, :stripe_token, :user_id, :last_charge, :stripe_card_token 
    belongs_to :user 
    has_many :payments, :dependent => :destroy 
    belongs_to :plan 
    attr_accessor :stripe_card_token 
end 

我SubscriptionsController新方法:

def new 
    @subscription = User.find(current_user.id).build_subscription 
end 

任何幫助是應用程序調整,謝謝!

+1

是指SessionsController或SubscriptionsController? – cdesrosiers

+0

@cdesrosiers嘿,對不起,我的意思是SubscriptionsController - 必須有頭腦中的會話。修正了,謝謝。 –

回答

12

我相信,當你通過類似的form_for的@subscription對象(具有類認購),預計在默認情況下的URL subscriptions_path 。但是,由於您已將訂閱聲明爲單元資源,因此將定義url subscription_path。您應該明確指定此路線

<%= form_for @subscription, url: subscription_path, :html => { class: 'form_dark' } do |f| %> 
+0

謝謝!這確實解決了這個問題。 –

0

兩個政治上的可疑斑,

1.您在您的應用程序有沒有認購控制器
2.你有沒有在你的應用程序的路由文件中定義subscriptions_path定製的路線?

閱讀您的評論和修正後,我們剩下的只有路線問題

+1

對不起,忽略SessionsController位(已修復),我打算輸入SubscriptionsController。 –