15

SimpleForm を使用してフォームを作成しています。

私は次のモデルを言っています:

class ScheduledContent < ActiveRecord::Base
    belongs_to :parent
    attr_accessible :lots, :of, :other, :fields
    serialize :schedule, Array
end

他の多くのフィールドと関連付け (このモデルは実際には既に has_many 関連付けの一部であるため、非常に複雑なフォームです) の中で、ユーザーに可変日数 (たとえば、1 日目、2 日目、 3 日目など) - そして、各日をオンまたはオフにすることができます。したがって、ユーザーが 1 日目をチェックし、5 日目が「スケジュール フィールドに [1, 5] を保存したい」と言った場合。フォームの前に - 既に選択されている日を含めて、選択可能な日の単純な配列を作成できます。

SimpleForm のフォーム ヘルパーを使用してこのフォームを表現する最良の方法は何ですか? それが不可能な場合は、Rails のフォーム ヘルパーを使用して機能させることもできますが、フォームの残りの部分は既に SimpleForm を使用して構築されているため、私の好みは SimpleForm です。

4

3 に答える 3

27

はい、SimpleForm で実行できます。次に例を示します。

<%= simple_form_for(@user) do |f| %>
  <%= f.input :schedule, as: :check_boxes, collection: [['Day 1', 1], ['Day 2', 2]] %>
  <%= f.button :submit %>
<% end %>
于 2012-12-12T18:36:27.950 に答える
5

古い質問への回答ですが、最近似たようなことをしなければなりませんでした。既に選択されているチェック ボックスのオプションをマークするには、次の:checkedようなものを使用しました。

<%=
  form.input :schedule, {
    as:         :check_boxes,
    collection: Days.my_scope.map { |day| [day.name, day.id] },
    wrapper:    :vertical_radio_and_checkboxes,
    checked:    form.object.schedule
  }
%>
于 2016-08-18T00:45:45.720 に答える
0

これにも苦労しました。最終的に以下のhamlコードにしました。SimpleForm のcollection_check_boxesメソッドを使用し、ラベル付きのチェック ボックスを縦に出力します。リストは、チェックボックス リスト全体の上部に一般的なラベルを表示しません。

= f.collection_check_boxes :schedule, Day.all, :id, :label_name do |day|
  = day.check_box
  = day.label
  %br
于 2021-08-21T15:06:35.177 に答える