Ruby on rails 共享部分-未保存记录-缺少参数或值为空-rails
我无法保存新记录。数据/输入由Ruby on rails 共享部分-未保存记录-缺少参数或值为空-rails,ruby-on-rails,ruby,forms,multipartform-data,Ruby On Rails,Ruby,Forms,Multipartform Data,我无法保存新记录。数据/输入由表单提交-共享部分-显示在用户控制器呈现的视图中 在users\u controller.rb中,查看页面user\u home.html.erb: def user_home if user_signed_in? @user = current_user @cpe_event = CpeEvent.new end end (删除@cpe\u event=CpeEvent.new会导致表单中的第一个参数在视图中不能包含nil或为空错误。)
表单提交
-共享部分-显示在用户控制器呈现的视图中
在users\u controller.rb
中,查看页面user\u home.html.erb
:
def user_home
if user_signed_in?
@user = current_user
@cpe_event = CpeEvent.new
end
end
(删除@cpe\u event=CpeEvent.new
会导致表单中的第一个参数在视图中不能包含nil或为空
错误。)
在我的cpe_events_controller.rb中,我有一个#创建操作:
def create
@cpe_event = CpeEvent.new
@user = current_user
@cpe_event = current_user.cpe_events.build(cpe_event_params)
...
数据以表格形式提交-共享部分:
<%= form_for @cpe_event, url: cpe_events_path, method: :post,
html: { multipart: true }, class: 'form-inline form_for form_for_content' do |f| %>
允许的参数代码为:
def cpe_event_params
params.require(:cpe_event).permit(....
如果我在def create
之后放置raise params.inspect
,我会得到提交的参数的散列:
{"utf8"=>"✓", "authenticity_token"=>"u1...1g==", "sponsor_name"=>"WI - TEST",
"class_date"=>"2014-01-01", "title"=>"How Account", "commit"=>"Submit",
"controller"=>"cpe_events", "action"=>"create"}
如果我从@cpe_event=current_user.cpe_events.build(cpe_event_params)
行中删除(cpe_event_params)
,并检查输出,我会得到一个值为零的记录-用户标识除外:
#<CpeEvent id: nil, course_id: nil, recruiter_id: nil, sponsor_id: nil, user_id: 2,
created_at: nil, updated_at: nil,....
提交的值-:赞助商名称、:类别日期和:标题-应保存为数据库中的字符串
我如何解决这个问题?谢谢 我认为,在您表单提交的以下参数中,没有名为“cpe_事件”的参数,这就是为什么它在使用以下方法要求“cpe_事件”参数时抛出错误的原因。确保表单提交了“cpe_事件”参数
params.require(:cpe_event).permit(....
{“utf8”=>“✓", "真实性令牌“=>”u1…1g==”,“赞助商名称”=>“WI”
测试“,”课程日期“=>”2014-01-01“,”标题“=>”如何记账“,
“提交”=>“提交”、“控制器”=>“cpe_事件”、“操作”=>“创建”}
你是对的;然而,这并不能解决问题。根据您的输入,我重新发布了问题(#30464733)。我想问题出在f.选择字段而不是f.text\u字段
谢谢您的帮助!你能把你表格的查看代码发给我吗?因为在提交表单时,上述参数的格式不正确。它的格式应该是{“utf”=>…,“cpe\u事件”=>{form parameters come here},“提交”=>“提交”,“控制器”=>“cpe\u事件”,“操作”=>“创建”}
param is missing or the value is empty: cpe_event
params.require(:cpe_event).permit(....