2016-12-19 6 views
0

Rails 5 앱에서 작동하도록 설치시 taggable 역할을 얻으려고합니다.Rails 5 - Taggable으로 작동 On - 특정 태그 목록에 대해 허용되지 않은 매개 변수

Randd :: Field.rb라는 모델에 title이라는 속성이 있습니다. 이 제목을 제안 모델의 태그로 사용하고 싶습니다.

내 Proposal.rb가 있습니다

클래스 제안 < ApplicationRecord 이 정치 :: 어댑터 :: 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에 화이트리스트되지 않을 때 온다 문제 - 내가 했어요.

누구나 제안서 양식을 통해 태그를 저장하기 위해 수행해야 할 작업을 볼 수 있습니까?

설정

클래스 사용자 < 액티브 :: 자료 acts_as_taggable # 별칭 acts_as_taggable_on을 위해 :

나는 그것을 보여주기 때문에 보석 문서는 혼란 찾을 태그 acts_as_taggable_on : 기술 : 관심 끝을

클래스 UsersController < ApplicationController def user_params params.require (: user) .permit (: name, : tag_list) ## 레일 s 4 개의 강력한 매개 변수 사용 끝 지정

허용되는 매개 변수에는 해당 특정 모델이 태그로 사용된다는 이유로 skill_list 및 an : interest_list가 포함되지 않는 이유는 무엇입니까? 나는 params를 특정 모델에 정의 된 제목에서 I에 나열된 한 추가 할 수있는 유일한 태그 경우에도 허용 된 내 제안에 "tag_list"을 추가하기로되어 있습니까 :

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 because : tags는'acts_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

허용되지 않은 param 오류는 중지되지만 태그 doest는 제안서에 저장합니다.randd_field_list에 대한 제안서 배열에 양식 선택을 실제로 추가하려면 제안서 컨트롤러에서 무엇인가해야합니까? – Mel

+0

나는 생각한다. 로그를 확인해야합니다. –