0

だから基本的に私は次のような情報を含む本のモデルを持っています

  • 本のタイトル(文字列)
  • 著者(文字列)
  • 説明(テキスト)

フロントエンドで、作成者フィールドを動的に追加する機能を追加しました。名前を付けた形式なbook[coauthor]ので、2人目の作成者を追加すると、フィールドが作成されますbook[coauthor][name_0]

私が達成したいのはbook[author]、すべてbook[coauthor][name_i]を1つの大きな文字列に結合し、各名前を。で区切ること,です。(つまり、book[author]「アリス」でありbook[coauthor][name_0]、「ボブ」である場合、「アリス、ボブ」book[author]をDBに保存する必要があります)

最初の質問:この時点で、JavascriptまたはRails(コントローラー内)を使用する方が良いですか?

2番目の質問:現在、Railsコントローラーで実行していますが、取得しましたCan't mass-assign protected attribute 'coauthor'。ただし、必要なのはすべての情報をauthorフィールドに保存する前の処理だけなので、これを実際の属性にしたくありません。私は何をすべきか?

みんなありがとう。

4

2 に答える 2

0

最初の質問は少しロードされており、いくつかの激しい意見の不一致が生じる可能性がありますが、私がそれを見る方法はこれです。誰もがJavascriptを有効にして実行しているわけではないので、Railsを介してすべてを自分で実行する方法があることを確認します。

この場合、それは実際には非常に簡単です。

私が最初にお勧めするのは、の一部として共著者を送信しないことparams[:book]です。代わりに、それらを別々にとして送信してくださいparams[:coauthors]。次に、コントローラーでこれを行うことができます。

@book = Book.new(params[:book])
@book.author = ([@book.author] + [params[:coauthors]]).join(",")
@book.save

実際には、params [:book] [:author]を更新する方が良い場合があります。これは、との両方createで機能するためupdateです。いずれにせよ、それがお役に立てば幸いです。

于 2013-01-25T20:29:09.700 に答える
0

最初の質問に対して:私はお互いに説得力のある理由を見ていません。JavaScriptは、このフィールドのフォーマットを「リアルタイム」で検証/修正する機能をもう少し提供する可能性がありますが、それが特に重要かどうかはわかりません。

2番目の質問へ:アクセス可能にするために何かを実際の属性にする必要はありません。coauthorを使用して仮想属性として作成したと思われますattr_accessorが、これによって一括割り当てホワイトリストに自動的に追加されるわけではありません。これを行うには、それもリストに追加しますattr_accessible

于 2013-01-25T20:22:38.967 に答える