mail_form gem rspec "неопределенный метод`email'для "

Как я могу написать тестовый mail_form gem? Но тест выдает ошибку. Как связать OrderForm и MailForm? У меня есть: модель:

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

конечный вид (форма отправки письма): orders/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

1 ответ

Проверить вывод rake routesURL orders/new выполнит orders#new действие и сделать вид orders/new.html.erb

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

new.html.erb будет использовать переменные из вашего orders#new действие. Вам не хватает этих переменных

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
Другие вопросы по тегам