Rails 4.0.2 を使用し、4.0.0.alpha.3 をグローバル化していますが、強力なパラメーターのリストを使用してデータを翻訳データベースに書き込むことができません。
オファー モデルと懸念事項 (OfferTranslationConcern) があります。
class Offer < ActiveRecord::Base
include OfferTranslationConcern
end
懸念
module OfferTranslationConcern
extend ActiveSupport::Concern
included do
attr_accessor :attribute_translations
translates :name, :city, :includes, :notes, :description, :slug
end
end
コントローラー
def update
respond_to do |format|
if @offer.update(offer_params)
format.html { redirect_to @offer, notice: 'Offer was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @offer.errors, status: :unprocessable_entity }
end
end
end
そして強いパラメータの定義
params.require(:user).permit('a lot of offer parameters', :attribute_translations => [:id, :name, :city, :includes, :notes, :description, :slug]
)
翻訳には、たとえばスペイン語とイタリア語 (it と es) を使用しています。オファーを更新すると、Unpermitted parameters: it, es が表示されます
パラメータは次のようになります。
"offer"=>{"attribute_translations"=>{"it"=>{"name"=>"dsfdsf", "city"=>"sdf", "includes"=>"sdfsdf", "notes"=>"sdfsd", "description"=>"fsdf"}, "es"=>{"name"=>"", "city"=>"", "includes"=>"", "notes"=>"", "description"=>""}}, "provider_id"=>"1",...a bunch of other stuff
今、私はこの強力なパラメータの定義でそれを機能させました
def offer_params
params.require(:offer).permit!
end
これは機能しますが、これが最善の方法だとは思いません。それで、私の質問は、パラメーターのリストを定義してこれを機能させる方法があるかどうかです。