0
我试图让Rails的4联络形式,但也仅是为Rails 3联系表格导轨4
教程,但我得到这个错误:
undefined method `name' for #<Message:0xa461fcc>
,我可以了解它不能“看到”模型。
index.html.erb
<%= form_for Message.new, :url => new_contact_path do |form| %>
<fieldset class="fields">
<div class="field">
<%= form.label :name %>
<%= form.text_field :name %>
</div>
... same fieldsets...
<fieldset class="actions">
<%= form.submit "Send" %>
</fieldset>
<% end %>
在我的模型
message.rb我得到:
class Message
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Validations
include ActionView::Helpers::TextHelper
validates :name, :email, :subject, :body, :presence => true
validates :email, :format => { :with => %r{[email protected]+\..+} }, :allow_blank => true
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
和路线我刚:
resources :contact
这就是控制器代码:
class ContactController < ApplicationController
def new
@message = Message.new
end
def create
@message = Message.new(contact_params)
if @message.valid?
NotificationsMailer.new_message(@message).deliver
redirect_to(root_path, :notice => "Message was successfully sent.")
else
flash.now.alert = "Please fill all fields."
render :new
end
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def contact_params
params.require(:message).permit(:name, :email, :subject, :body)
end
end
谢谢提前!
它确实有效。谢谢!我认为attr_accessor仅在Rails 3或更低版本中使用。我认为我错了。再次感谢。 – AlexEfremo
attr_accessor是纯ruby,你可能会混淆''attr_accessible''这是rails,并且确实不赞成rails4中的强参数。请接受我的答案,如果你完成了它:) – Intrepidd
是的。我在等待,直到我可以:)再次感谢与解释。你是对的,我很困惑。我的错。 – AlexEfremo