如何获取datetime_select的参数进行保存?
错误参数:
{"utf8"=>"✓",
"authenticity_token"=>"/Tu18E4ubxp0XWcoLTdrm2B4Ho80PDH86dWwm9fvEMs=",
"post"=>{"title"=>"asdf",
"event_date(1i)"=>"2015",
"event_date(2i)"=>"8",
"event_date(3i)"=>"7",
"event_date(4i)"=>"15",
"event_date(5i)"=>"26",
"description"=>"asdf",
"published"=>"0"},
"button"=>""}
模特:
class Spree::Post < ActiveRecord::Base
validates_presence_of :title, :description, :event_date
def event_date
end
scope :published, lambda { where(:published => true) }
scope :latest, order("created_at DESC").limit(3)
end
关联控制器代码:
def create
@post = Spree::Post.new(post_params)
if @post.save
flash[:notice] = "Post saved successfully"
redirect_to admin_posts_path
else
flash[:alert] = "There was an error saving your post"
redirect_to :back
end
end
观点:
<p><%= f.label :event_date, Spree::Post.human_attribute_name(:event_date) %></p>
<p><%= f.datetime_select :event_date %></p>
问题似乎是它试图存储多个值。我猜这个修复是通过添加到模型文件,对吗?
答案 0 :(得分:0)
您是否允许event_date
使用post_params
? (我们不知道,因为您没有包含整个帖子控制器文件。)如果您还没有允许它们,您可能想尝试修改post_params
看起来像:
class Spree::PostsController < ActionController::Base
private
def post_params
params.require(:post).permit(:event_date)
end
end
有关详细信息,请参阅http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html。
编辑:实际上,考虑到您提供的错误消息片段,我对您的参数问题存在信心不足。不过,我仍然会保持这个答案。
答案 1 :(得分:0)
您必须明确允许每个参数部分
def post_params
params.require(:post).permit("event_date(1i)","event_date(2i)","event_date(3i)","event_date(4i"),"event_date(5i)",:any,:other,:post,:fields)
end
答案 2 :(得分:0)
您应该确保您的字段是数据库中的日期时间。如果它是一个字符串,当您尝试保存datetime_select时,它将抛出此错误消息。