3

私のRailsプロジェクトでは、表示すると次のエラーが発生します/subscription/new

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

My SubscriptionsControllerの新しいメソッド:

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

どんな助けでもありがたいです、ありがとう!

4

2 に答える 2

13

@subscription(クラスSubscriptionを持つ)のようなオブジェクトのform_forを渡すと、デフォルトでurlsubscriptions_pathが必要になると思います。ただし、サブスクリプションを単一のリソースとして宣言しているため、代わりにURLsubscription_pathが定義されます。このルートを明示的に指定する必要があります

<%= form_for @subscription, url: subscription_path, :html => { class: 'form_dark' } do |f| %>
于 2012-06-07T21:26:04.437 に答える
0

政治的に疑わしい2つの場所、

1.アプリにサブスクリプションコントローラーがありません
subscriptions_path2.アプリのルートファイルでカスタムルート を定義しましたか?

あなたのコメントと訂正を読んだ後、私たちはルートの問題だけを残されています

于 2012-06-07T21:15:32.583 に答える