strong rails permit multiple ruby-on-rails ruby ruby-on-rails-4 strong-parameters

ruby-on-rails - multiple - rails permit param



Rails 4 Parámetros no permitidos para Array (5)

Los tipos escalares permitidos son String , Symbol , NilClass , Numeric , TrueClass , FalseClass , Date , Time , DateTime , StringIO , IO , ActionDispatch::Http::UploadedFile y Rack::Test::UploadedFile .

Para declarar que el valor en params debe ser una matriz de valores escalares permitidos, asigne la clave a una matriz vacía:

params.permit(:id => [])

Esto es lo que dice la fuerte documentación de parámetros en Github :

params.require(:post).permit(:name, :email, :categories => [])

Espero que esto funcione para usted.

Tengo un campo de matriz en mi modelo y estoy intentando actualizarlo.

Mi método de parámetro fuerte está debajo

def post_params params["post"]["categories"] = params["post"]["categories"].split(",") params.require(:post).permit(:name, :email, :categories) end

Mi acción en mi controlador es la siguiente

def update post = Post.find(params[:id] if post and post.update_attributes(post_params) redirect_to root_url else redirect_to posts_url end end

Sin embargo, cada vez que envío la actualización de la publicación, en mi registro de desarrollo veo

Unpermitted parameters: categories

Los parámetros pasados ​​son

Parameters: {"utf8"=>"✓", "authenticity_token"=>"auth token", "id"=>"10", "post"=>{"name"=>"Toni Mitchell", "email"=>"[email protected]", "categories"=>",2"}}

Quiero pensar que tiene algo que ver con el hecho de que las categories atributos son una matriz, ya que todo lo demás se ve bien. Por otra parte, podría estar equivocado. Entonces, ¿qué pasa con mi código y por qué no me permite guardar el campo de categorías cuando está claramente permitido hacerlo? Gracias.


Prueba esto

params.require(:post).permit(:name, :email, :categories => [])

(Ignore mi comentario, no creo que eso importe)


Tuve el mismo problema, pero en mi caso también tuve que cambiar de:

<input type="checkbox" name="photographer[attending]" value="Baku">

a:

<input type="checkbox" name="photographer[attending][]" value="Baku">

Espero que esto ayude a alguien.


Tuve el mismo problema, pero simplemente agregar array para permitir no fue suficiente. Tuve que agregar el tipo, también. De esta manera:

params.require(:transaction).permit(:name, :tag_ids => [:id])

No estoy seguro de si esta es la solución perfecta, pero después de eso, el registro de ''Parámetros no permitidos'' desapareció.

Encontré una pista para encontrar esa solución en esta excelente publicación: http://patshaughnessy.net/2014/6/16/a-rule-of-thumb-for-strong-parameters


en rieles 4, eso sería,

params.require(:post).permit(:name, :email, {:categories => []})