0

以前に作成したビューはすべて正常に機能しています。サブスクリプション用のモデルとコントローラーを生成し、対応するビューをホームページにリンクしました。エラーはスローされませんが、erb コードがブラウザーにレンダリングされません。html を追加できます (つまり、div でラップされた「hello world」)。

私は次のことを試しました。

  1. 周囲の html コードを取り除き、erb でラップされた Rails ヘルパー メソッドを試してみました。
  2. サブスクリプション モデルとサブスクリプション コントローラー/ビューの両方を削除して再生成しました
  3. サブスクリプション関連の問題について、routes.rb ファイルを確認しました
  4. SOからのこれらの関連する質問の両方を無駄にしました。リンク1 リンク 2

私のコードとwebrickからの出力を見てください:

ウェブリック出力

# subscriptions/index.html.erb

<% form_for(@subscription) do |f| %>
<div class="container">
  <div class="row-fluid">
    <div class="span12">
      <div class="widget widget-table">
        <div class="widget-header">
          <h3>
            <i class="icon-"></i>&nbsp;&nbsp;Pay with Credit Card
          </h3>
        </div>
        <div class="widget-content">
          <table class="table table-striped table-bordered">
            <tbody>
              <tr>
                <td>
                  <% if @subscription.stripe_card_token.present? %>
                    Credit card has been provided.
                  <% else %>
                    <div class="control-group">
                      <%= label_tag :card_number, "Credit Card Number" %>
                      <%= text_field_tag :card_number, nil, name: nil %>
                    </div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div class="control-group">
                      <%= label_tag :card_code, "Security Code on Card (CVV)" %>
                      <%= text_field_tag :card_code, nil, name: nil %>
                    </div>
                  </td>
                </tr>
                <tr>
                  <td>
                    <div class="control-group">
                      <%= 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>
                  </td>
                  <% end %>
                </tr>
                <tr>
                  <td>
                  <div id="stripe_error">
                    <noscript><!--Error here--></noscript>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </div><!-- END CLASS widget-content -->
      </div><!-- END CLASS widget widget-table -->
    </div><!-- END CLASS span12 -->
  </div><!-- END CLASS row-fluid -->
</div><!-- END CLASS container -->
<% end %>

# routes.rb

Whizcharts::Application.routes.draw do
  resources :subscriptions, only: [:new, :create, :index]
  # START devise routes
  devise_for :admins, controllers: { registrations: "registrations" }# , path_names: { sign_in: "login", sign_out: "logout" }

  mount Deviseadmin::Engine, at: "/deviseadmin"

  devise_for :users, path_names: { sign_in: "login", sign_out: "logout" }
  ## END devise routes

  # START mailer
    # match 'admins/show', to: "admins#show"
  ## END mailer

  # START static_pages routes
  root to: "static_pages#home"
  match "static_pages/about", to: "static_pages#about", as: :about
  match "static_pages/pricing", to: "static_pages#pricing", as: :pricing
  match "static_pages/contact", to: "static_pages#contact", as: :contact
  ## END static_pages routes

  # START deployments routes
  match "deployments/deployment_print", to: "residents#deployment_print", as: :print



# subscriptions_controller.rb

# Note: Subscription.new is in the index method temporarily to demonstrate this issue

class SubscriptionsController < ApplicationController
  def index
    @subscription = Subscription.new
    @subscriptions = Subscription.all
  end

  def new
    @subscription = Subscription.new
  end

  def show
    @subscription = Subscription.find(params[:id])
  end
end

# subscription.rb

class Subscription < ActiveRecord::Base
  belongs_to :admin, dependent: :destroy
  validates_presence_of :plan_id

  attr_accessor :stripe_card_token

  def save_with_payment
    if valid?
      customer = Stripe::Customer.create(plan: plan_id, card: stripe_card_token)
      self.stripe_customer_token = customer.id
      save!
    end
  rescue Stripe::InvalidRequestError => e
    logger.error "Stripe error while creating customer: #{e.message}"
    errors.add :base, "There was a problem with your credit card."
    false
  end
end


# admin.rb

# Note: Included to demonstrate the association between the Admin and Subscription models

class Admin < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  attr_accessible :email, :password, :password_confirmation, :remember_me, :fac_name,    :fac_address, :fac_city, :fac_state, :fac_zip, :lic_num, :owner_fname, :owner_lname, :fac_phone1,:fac_phone2, :fac_phone3, :fac_phone4, :fac_phone5, :fac_email1, :fac_email2, :fac_email3, :fac_email4, :fac_email5, :initials

  has_many :residents
  has_many :fund_record_form2s, through: :residents
  has_many :deployments
  has_many :subscriptions

  def full_name
    "#{owner_fname} #{owner_lname}"
  end
end

私はレール3.2.14を実行しています

忘れ物がありましたら、ご連絡後速やかにアップいたします。

4

2 に答える 2

1

=equal( ) 記号がありません。

そのはず<%= form_for(@subscription) do |f| %>

于 2013-08-21T17:50:59.230 に答える
0

form_for ヘルパーの前に等号がありません。

<%= form_for %>

等号が必要です。そうしないと、ERB タグがテンプレートに配置されません。

于 2013-08-21T17:49:01.937 に答える