我正在使用rails 4.我有一个使用验证的模型,但不存储任何记录。它仅用于发送电子邮件的Web联系表单。
我正在尝试使用此控制器/模型的强参数。目前我对我的新动作感到非常恐怖。有任何想法吗?我认为这与我的模型不是一个完整的模型有关。?
代码缩小以便于查看。
模型:
class Message
include ActiveModel::Model
include ActiveModel::ForbiddenAttributesProtection
end
控制器:
class MessagesController < ApplicationController
def new
@message = Message.new
end
private
def project_params
params.require(:message).permit(:name, :email, :content)
end
end
答案 0 :(得分:2)
您的project_params
需要重命名为message_params
,因为您希望在MessagesController
而非project
中允许留言。
请尝试:
class MessagesController < ApplicationController
def new
@message = Message.new
end
private
def message_params
params.require(:message).permit(:name, :email, :content)
end
end
更新
此外,虽然您已经提到“为了便于查看而缩减了代码”,但我还要补充一点,您还需要为这些允许的属性定义att_accessor
,如下所示:
class Message
include ActiveModel::Model
include ActiveModel::ForbiddenAttributesProtection
attr_accessor :name, :email, :content
end
请参阅路易十四在这个问题中的回答:“Rails Model without a table”