2

ハードコードされた値と AR の値を入力したい選択リストがあります。たとえば、ユーザーがトランザクションの支払いオプションを選択するためのリストがあります。

  • クレジットカード
  • 現金
  • ギフト券

簡単に...

<%= select_tag :paying_with, options_for_select([["Credit card", "credit_card"], ["Cash", "cash"], ["Gift Certificate", "gift_certificate"]] %>

ここで、一般的な「クレジット カード」オプションを削除し、ユーザーがファイルに持っている各クレジット カードを含めます (たとえば、PaymentMethodに属する各モデルUser) 。

  • 末尾が 1234 の MasterCard
  • 末尾が 4321 の AmEx
  • 現金
  • ギフト券

両方を個別に行う方法は知っていますが、それらをブレンドする方法がわかりません。これは必ずしもモデルのプロパティに対応するとは限らないため、のselect_tag代わりにa を使用していることに注意してください。FormHelper.select

4

2 に答える 2

1
@options = @user.credit_cards.map{ |c| ["Your #{c.card_name} ending in #{c.card_last_four_digits", c]}.insert(["Cash", "cash"]).insert(["Gift Certificate", "gift_certificate"])

これにより、options_for_select に渡す配列が得られます。関連するコードを投稿していないので、いくつかの変数名を推測しています。

于 2013-10-16T16:59:00.470 に答える
0

<<ニキータのコメントと古き良きファッションオペレーターの組み合わせをやってしまいました。もともとクエリをビューに保持したかったのですが、複雑になりすぎていました。

    @payment_options = []
    @payment_options << ["No charge", "no_charge"]
    @payment_options += PaymentMethod.where(...).map { |p| [p.name, p.id] }.to_a
    @payment_options << ["Cash", "cash"]
    @payment_options << ["Gift Certificate", "gift_certificate"]

...そしてビューで...

<%= select_tag :paying_with, options_for_select(@payment_options, enrollment.paying_with || "no_charge") %>
于 2013-10-17T18:17:48.960 に答える