【问题标题】:Rails datetime_select: 1 error(s) on assignment of multiparameter attributes [error on assignmentRails datetime_select:分配多参数属性时出现1个错误[分配错误
【发布时间】:2014-08-07 16:00:42
【问题描述】:

如何获取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>

问题似乎在于它试图存储多个值。我猜想通过添加到模型文件来修复,对吧?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    您是否允许在您的post_params 中使用event_date? (我们不知道,因为您没有包含整个帖子控制器文件。)如果您尚未允许它们,您可能想尝试编辑您的 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

    编辑:实际上,鉴于您提供的错误消息的 sn-p,我不太确定您有严重的参数问题。不过,我仍然会保持这个答案。

    【讨论】:

    • 是的,我在post_params 中允许event_date
    【解决方案2】:

    您必须明确允许每个参数部分

    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
    

    【讨论】:

      【解决方案3】:

      您应该确保您的字段是数据库中的日期时间。如果它是一个字符串,它会在您尝试保存 datetime_select 时抛出此错误消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-21
        • 1970-01-01
        • 1970-01-01
        • 2013-11-20
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多