Я относительный новичок во всем этом, так что извините, если это звучит безумно!
Я использовал этот урок: http://www.railsmine.net/2010/03/rails-3-action-mailer-example.html
И у меня работает новая форма контактаотлично.
Контроллер находится в app / controllers / support_controller.rb
class SupportsController < ApplicationController
def new
# id is required to deal with form
@support = Support.new(:id => 1)
end
def create
@support = Support.new(params[:support])
if @support.save
redirect_to('/', :notice => "Support was successfully sent.")
else
flash[:alert] = "You must fill all fields."
render 'new'
end
end
end
А модель в /app/models/support.rb
class Support
include ActiveModel::Validations
validates_presence_of :email, :sender_name, :support_type, :content
# to deal with form, you must have an id attribute
attr_accessor :id, :email, :sender_name, :support_type, :content
def initialize(attributes = {})
attributes.each do |key, value|
self.send("#{key}=", value)
end
@attributes = attributes
end
def read_attribute_for_validation(key)
@attributes[key]
end
def to_key
end
def save
if self.valid?
Notifier.support_notification(self).deliver!
return true
end
return false
end
end
Однако представления работают только в views / support / new.html.rb (предоставлено - views / support / _form.html.erb)
Таким образом, я могу вызывать модель / контроллер из localhost: 3000 / support / new, ноесли я пытаюсь отобразить ту же форму в другом виде из корневого каталога, например, app / view / contact.html.erb, я получаю:
undefined method `model_name' for NilClass:Class
Я думаю, это потому, что она вызывает модель поддержки изкаталог поддержки.
Нужно ли создавать экземпляр @support, чтобы его можно было вызывать?Если так, каков наилучший способ сделать это?Я думаю, что я почти там.Я просто хочу контактную форму на нескольких страницах, а не только в support / new
Спасибо
Charlie