2017-12-29 27 views
0

私はどのようにしてtest_mail_formの宝石を書くことができますか? テストでエラーが発生しました。 OrderFormとMailFormを関連付けるにはどうすればよいですか? 私が持っている: モデル:mail_form gem rspec "未定義のメソッド` email 'for "

class OrderForm < MailForm::Base 
    attributes :name 
    attributes :email 
    attributes :phone_number 
    attributes :order_name 
    attributes :address 
    attributes :file_1, attachment: true 
    def mail_attachments 
    [:file_1] 
    end 

コントローラ、:

class OrdersController < ApplicationController 

    def create 
    @order_form = OrderForm.new(params[:order_form]) 
    @order_form.deliver 
    redirect_to root_path, notice: 'Заявка отправлена' 
    end 
end 

端面図(手紙を送信する形式): 注文/ new.html.haml_spec.rb

=form_for @order_form, url: orders_path, method: :post do |f| 
     =f.text_field :name, placeholder: 'ФИО', class: 'gui-input' 
     =f.text_field :email, placeholder: 'Email', class: 'gui-input' 
     =f.text_field :phone_number, placeholder: 'Номер телефона', 

終了書き込みテスト:

require 'rails_helper' 
RSpec.describe "orders/new", type: :view do 
    it do 
     assign(:order, build(:order)) 
     render 
     expect(rendered).to have_field :name 
    end 
end 
+0

と、メッセージのエラーを持っているが欠落しています ActionView :: Template :: Error: フォームの最初の引数にはnilを含めることができないか、空にすることはできません。 –

答えて

1

rake routesの出力をチェックし、URL orders/neworders#newアクションを実行し、あなたのorders#newアクションから変数を使用するビューorders/new.html.erb

GET /orders/new orders#new return an HTML form for creating a new order 

new.html.erbをレンダリングします。 | | Fポストはない: 受注/新 失敗/エラー:=のform_for @order_form、URL:orders_path、方法:あなたはそれらの変数

class OrdersController < ApplicationController 

    def new 
    @order_form = OrderForm.new 
    end 

    def create 
    @order_form = OrderForm.new(params[:order_form]) 
    @order_form.deliver 
    redirect_to root_path, notice: 'Заявка отправлена' 
    end 
end 
+0

私は新しい/新しい注文と新しいアクションを注文します、そして他のアクション(send_message、showなど) 。 受注/新 失敗/エラー:= f.text_field:電子メール、プレースホルダ:[メール]、クラス: 'GUI入力' ActionView ::テンプレート、私はメッセージのエラーを持っている : 私はRSpecのテストに問題があります::エラー: 未定義のメソッド 'email:#

+0

@AleksZadkov' OrderForm'には 'email'属性があります。あなたは 'Order'のemail属性を持っていません。あなたのアーキテクチャはすべて間違っています。あなたはorderformオブジェクトを作成しません。 http://guides.rubyonrails.org/form_helpers.htmlのガイドを読んで、http://guides.rubyonrails.org/active_record_basics.htmlの概念を理解してみてください –

関連する問題