2016-12-19 1 views
0

J'essaye d'obtenir des actions comme taggable sur setup pour fonctionner avec mon application Rails 5.Rails 5 - Agit comme Taggable On - paramètres non autorisés pour une liste de tags spécifique

J'ai un modèle appelé Randd :: Field.rb, qui a un attribut appelé: title. Je veux utiliser ces titres comme balises pour mon modèle de proposition.

Mon Proposal.rb a:

classe Proposition < ApplicationRecord comprennent Statesman :: Adaptateurs :: ActiveRecordQueries

acts_as_taggable 
    acts_as_taggable_on :randd_maturities, :randd_fields, :randd_purposes, :randd_activities 

Ma proposition a form.html.erb:

<%= f.collection_select :randd_field_list, Randd::Field.order(:title), :id, :title, {}, {multiple: true} %> 

Mon contrôleur de proposition liste les randd_field_list avec:

def proposal_params 
     params.require(:proposal).permit(:title, :randd_maturities_list, :randd_field_list, :randd_purposes_list, :randd_activities_list) 

Lorsque je sauvegarde tout cela et que j'essaie d'ajouter un tag à une proposition, j'obtiens une erreur. Le journal du serveur indique:

Unpermitted parameter: randd_field_list 

Cela n'a pas de sens parce que son problème qui se pose lorsque l'attribut est pas dans les params liste blanche autorisées - que je l'ai fait.

Quelqu'un peut-il voir ce qui doit être fait pour sauvegarder des étiquettes via le formulaire de proposition?

Je trouve la documentation de pierres précieuses confusion car il montre:

Configuration

classe utilisateur < ActiveRecord :: Base acts_as_taggable # Alias ​​pour acts_as_taggable_on: balises acts_as_taggable_on: compétences,: intérêts fin

classe UsersController < ApplicationController def user_params params.require (: user) .permit (: nom,: liste_tags) ## Rail s 4 paramètres forts utilisation end end

Pourquoi les paramètres autorisés ne comprennent-ils pas: skill_list et un: interest_list étant donné que ces modèles spécifiques sont utilisés comme balises? Suis-je censé ajouter « liste_balise » à ma proposition Admet params même lorsque les seules balises qui peuvent être ajoutés sont des titres définis dans les modèles spécifiques que j'ai énumérés dans:

acts_as_taggable_on :randd_maturities, :randd_fields, :randd_purposes, :randd_activities 

Le journal du serveur montre:

ActsAsTaggableOn::Tagging Load (1.6ms) SELECT "taggings".* FROM "taggings" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 [["taggable_id", 17], ["taggable_type", "Proposal"]] 
    ActsAsTaggableOn::Tag Load (1.7ms) SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 AND (taggings.context = 'randd_fields' AND taggings.tagger_id IS NULL) [["taggable_id", 17], ["taggable_type", "Proposal"]] 



    ActsAsTaggableOn::Tagging Load (2.8ms) SELECT "taggings".* FROM "taggings" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 [["taggable_id", 17], ["taggable_type", "Proposal"]] 
    ActsAsTaggableOn::Tag Load (3.0ms) SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 AND (taggings.context = 'randd_fields' AND taggings.tagger_id IS NULL) [["taggable_id", 17], ["taggable_type", "Proposal"]] 
    Randd::Field Load (1.6ms) SELECT "randd_fields".* FROM "randd_fields" ORDER BY "randd_fields"."title" ASC 


Processing by ProposalsController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"BF7l9/0QTVN3A==", "proposal"=>{"title"=>"asdf", "byline"=>"asdf", , "randd_field_list"=>["", "1"], 

Unpermitted parameter: randd_field_list 
+0

affichez votre journal pour cette demande, en particulier les paramètres entrants. Dans la documentation est utilisé: tag_list car: tags est par défaut pour 'acts_as_taggable_on'. Ils devraient aussi ajouter: skill_list dans cet exemple. –

+0

@AlexKojin - J'ai ajouté les extraits du journal du serveur – Mel

Répondre

0

Vous envoyez un tableau pour les paramètres * _list. Essayez d'ajouter [] pour chaque _list dans la méthode de permis:

params.require(:proposal).permit(
    :title, 
    randd_maturities_list: [], 
    randd_field_list: [], 
    randd_purposes_list: [], 
    randd_activities_list: []) 
+0

Cela arrête l'erreur param non autorisée, mais le tag doest enregistre dans la proposition.Ai-je besoin de faire quelque chose dans le contrôleur de proposition pour ajouter réellement la sélection de formulaire au tableau de proposition pour la liste de tâches de randd_field? – Mel

+0

Je pense, non. Vous devez vérifier votre journal. –