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 routes
URL 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