有人能够帮助我理解这个错误吗?我正在尝试按照构建网络应用程序教程在 Rails 中创建联系表单。我按照以下步骤生成了消息支架。然后我修改了我的路线。接下来它说将其放入消息控制器显示操作中。
if @message.save
flash[:notice] = 'Thanks for Your Message'
format.html { redirect_to root_path }
我已经这样做了,但收到以下错误
MessagesController#create 中的 ActiveModel::ForbiddenAttributesError
ActiveModel::ForbiddenAttributesError
这是我的消息控制器文件
class MessagesController < InheritedResources::Base
def show
if @message.save
flash[:notice] = 'Thanks for Your Message'
format.html { redirect_to root_path }
end
end
end
我的路线文件如下
# devise_for :users
资源:产品做
资源:订单,仅:[:新,:创建]
#告诉rails需要产品ID号
结尾
# get 'pages/payment'
get 'home/about'
get 'messages/new'
get 'seller' => "products#seller"
get 'sales' => "orders#sales"
get 'static_pages/productlanding'
get "content/veg"
get "content/fruit"
get "content/mix"
get 'subscriptions/new'
root 'static_pages#home'
你为什么saving in the show action?
--
Params
The ForbiddenAttributes
错误源于strong_paramsRails 的功能。
保存数据时,您应该通过以下方式将参数传递给您的模型:strong_params
方法。这通常通过以下设置来实现:
#app/controllers/messages_controller.rb
class MessagesController < ApplicationController
def show
@message = Message.find(params[:id])
end
def new
@message = Message.new
end
def create
@message = Message.new(message_params)
@message.save
end
private
def message_params
params.require(:message).permit(:your, :message, :params)
end
end
这就是你的controller
确实应该建造。我相信您的错误是由于您缺少传递给模型中的属性的参数造成的(因此您调用@save
导致尝试用非数据填充模型)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)