我試圖在安裝程序上使用我的Rails 5應用程序的標記。Rails 5 - 作爲Taggable使用 - 針對特定標記列表的未經許可的參數
我有一個叫做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列入白名單的一個問題 - 這是我做的事。
任何人都可以看到需要做什麼才能通過提案表單保存標籤嗎?
我找到寶石文檔混亂,因爲它表明:
設置
類用戶<的ActiveRecord :: Base的acts_as_taggable#別名 acts_as_taggable_on:標籤acts_as_taggable_on:技能:興趣 結束
class UsersController < ApplicationController def user_params params.require(:user).permit(:name,:tag_list)## Rail s 4強參數用法end end
爲什麼不允許的參數包含a:skill_list和an: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
顯示此請求的日誌,尤其是傳入參數。在文檔中使用:tag_list,因爲:標籤默認爲'acts_as_taggable_on'。他們也應該將skill_list添加到該示例中。 –
@AlexKojin - 我添加了服務器日誌提取 – Mel