2

問題なく動作する simple_form UI があります。f.input :group_idsポーリングをグループに割り当てるために使用しています (ポーリングhas_and_belongs_to_many:グループですが、UI で 1 つだけに制限しています)。

とにかくUIをより洗練された方法で実行したいのですが、検証が失敗した場合にも深刻な問題が発生します.入力は値[4]のテキスト入力に戻ります.4は現在のグループのIDです. (見栄えが悪いだけでなく、括弧を手動で削除しない限り、送信に失敗します)

<%= simple_form_for @poll do |f| %>
   <% if params[:group] %>
      <%= f.input :group_ids, :label => "Group", :selected => params[:group], :collection => @groups, :include_blank => false, :input_html => {:multiple => false} %>
   <% else %>
      <%= f.input :group_ids, :label => "Group", :collection => @groups, :include_blank => false, :input_html => {:multiple => false} %>
   <% end %>
...
<% end %>

これを行うためのより良い方法が大好きです-f.associationを使用してみましたが、単一選択のドロップダウンに制限する方法がわかりませんでした.

4

2 に答える 2

2

レンダー アクションnewまたはeditの前に、メソッドcreateまたはupdateで@groupsを設定する必要があります。

例えば

def new
  @groups = Group.all
  ....
end

def create
  @poll = Poll.new(poll_params)

  respond_to do |format|
    if @poll.save
      format.html { redirect_to ... }
      format.json { render action: 'show', status: :created, location: @poll }
    else
      ### ! in case of validation is failed init data for the form ! ###
      @groups = Group.all
      format.html { render action: 'new' }
      format.json { render json: ... }
    end
  end
end
于 2014-03-16T23:14:06.480 に答える
0

私はcollection_selectを試してみます:

例えば ​​f.collection_select(:group, :group_id, Group.all, :id, :name, :prompt => 'Group') のようなもの

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

于 2012-08-10T03:19:17.850 に答える