无法理解rails 4.2中语法错误的原因

时间:2015-07-16 04:48:23

标签: ruby-on-rails-4.2 ruby-2.1

我有以下代码:

params.require(:posting_status).permit(:email, :craig_password,  :mail_password, :posting_id, post_to:[])  

此行不会出现语法错误,但在我喜欢的时候:

params.require(:posting_status).permit(:email, :craig_password, :mail_password,  post_to:[], :posting_id)  

这给出了语法错误,找不到原因。

1 个答案:

答案 0 :(得分:1)

在第一种情况下,您在开头使用了符号,在结尾使用了(隐式!)哈希。

在第二种情况下隐式哈希不在最后。 显式哈希解决了这个问题。

params.require(:posting_status).permit(:email,:craig_password,:mail_password,{post_to:[]},:posting_id)

P.S。 'permit'方法的源代码:

文件actionpack / lib / action_controller / metal / strong_parameters.rb,第325行

def permit(*filters)
  params = self.class.new

  filters.flatten.each do |filter|
    case filter
    when Symbol, String
      permitted_scalar_filter(params, filter)
    when Hash then
      hash_filter(params, filter)
    end
  end

  unpermitted_parameters!(params) if self.class.action_on_unpermitted_parameters

  params.permit!
end