0
我正在使用rails 4.我有一個使用驗證的模型,但不存儲任何記錄。它僅用於發送電子郵件的網絡聯繫表單。Rails 4 Strong Params錯誤
我想用這個控制器/模型使用強大的參數。目前,我正在爲我的新操作獲得一個nomethoderror。有任何想法嗎?我認爲這與我的模型不是一個完整的模型有關。
減少代碼以方便查看。
型號:
class Message
include ActiveModel::Model
include ActiveModel::ForbiddenAttributesProtection
end
控制器:既然你想允許消息在MessagesController
,而不是project
class MessagesController < ApplicationController
def new
@message = Message.new
end
private
def project_params
params.require(:message).permit(:name, :email, :content)
end
end
好消息在message_params。我試圖從項目腳手架上覆制一些代碼。我不明白爲什麼我必須在Rails 4中添加attr_accessor?運行一個腳手架,它不使用attr_accessor,並且params.require(model).permit(列)與創建和更新操作一起運行。新操作僅在模型中包含@project = Project.new並且沒有attr_accessor。 –
@KeilMiller,您必須在模板文件中訪問這些屬性,例如'new.html.erb',這是NoMethodError的起源。強參數直接替代了Rails4之前用於批量分配的'attr_accessible'。我們使用'attr_accessor',一個ruby方法來爲屬性定義getter和setter。請看看'attr_accessor'和'attr_accessible'之間的區別。 – vee
我想我現在明白了。非常感謝你的明確解釋。這個[問題/答案](http://stackoverflow.com/questions/3136420/difference-between-attr-accessor-and-attr-accessible)對於attr_accessible和attr_accessor之間的區別也很有用。 –