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