2016-12-19 17 views
0

Я пытаюсь получить действие как taggable при настройке для работы с моим приложением Rails 5.Rails 5 - Действует как Taggable Вкл. - неотправленные параметры для определенного списка тегов

У меня есть модель под названием Randd :: Field.rb, которая имеет атрибут, называемый: title в нем. Я хочу использовать эти заголовки в качестве тегов для моей модели заявки.

Мои Proposal.rb имеет:

класс Предложение < ApplicationRecord включают Statesman :: Переходники :: ActiveRecordQueries

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

Мое предложение form.html.erb имеет:

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

Мой контролер предложений добавляет в список randd_field_list:

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

Когда я сохраняю все это и пытаюсь добавить тег в предложение, я получаю сообщение об ошибке. Журнал сервера показывает:

Unpermitted parameter: randd_field_list 

Это не имеет никакого смысла, поскольку его проблема, которая приходит, когда атрибут не в белом списке разрешенного Params - которые я сделал.

Может ли кто-нибудь увидеть, что нужно сделать, чтобы сохранить теги через форму заявки?

я найти документацию камень в заблуждение, потому что она показывает:

Настройка

< класс User ActiveRecord :: Base acts_as_taggable # Алиас для acts_as_taggable_on: теги acts_as_taggable_on: навыки,: интересы конец

класс UsersController < ApplicationController def user_params params.require (: user) .permit (: name,: tag_list) ## Rail s 4 сильные параметры использования конечного конца

Почему допустимые параметры не включают в себя: skill_list и: interest_list, учитывая, что эти конкретные модели используются в качестве тегов? Я должен добавить «tag_list» к моему предложению разрешается PARAMS даже тогда, когда только теги, которые могут быть Добавленные из названий, определенных в конкретных моделях я перечислил в:

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

журнал сервера показывает:

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

показать свой журнал для этого запроса, особенно входящих параметров. В документации используется: tag_list, потому что: тегами по умолчанию являются 'act_as_taggable_on'. Они также должны добавить: skill_list в этот пример. –

+0

@AlexKojin - Я добавил выдержки из журнала сервера – Mel

ответ

0

Вы отправляете массив для параметров * _list. Попытайтесь добавить [] для каждого _list в методе разрешения:

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

Это останавливает ошибку с ошибкой, не указанную в параметре, но тэг doest сохраняет в предложении.Нужно ли мне что-то делать в контроллере предложения, чтобы фактически добавить выбор формы в массив предложений для randd_field_list? – Mel

+0

Думаю, нет. Вам нужно проверить свой журнал. –