1

さまざまな電話番号を追加するための簡単なフォームが必要です。

ActiveAdmin.register Did do
    # ..
    collection_action :add_range, :method => :get do
    end
    collection_action :add_range, :method => :post do
    end
end

<%= semantic_form_for [:admin, :dids, :add_range] do |f| %>
    <%= f.inputs :start, :end %>
    <%= f.buttons :commit %>
<% end %>

上記は「Symbol:Classの未定義のメソッド`model_name'」で失敗します。

オブジェクトを直接使用しないこのようなフォームを定義するにはどうすればよいですか?

4

3 に答える 3

2

試してみましたが、これはうまくいきます:

<%= semantic_form_for :range, :url => add_range_admin_dids_path do |f| %>
    <%= f.inputs :start, :end %>
    <%= f.buttons :commit %>
<% end %>

次に、投稿されたパラメーターを params[:range] で見つけます

于 2012-07-15T20:34:08.943 に答える
0

の呼び出しにモデルが必要だと確信していますsemantic_form_for。アクションはコレクションアクションであるため、特定のDIDに作用していません。では、どのモデルを作成しようとしていますか?レンジモデル?その場合は、次のようなものが必要です。

<%= semantic_form_for [:admin, @range] do |f| %>
  <% ... %>
  <%= f.buttons :commit
<% end %>

もちろん、コントローラーの@range場合と同様に初期化する必要があります。Range.new

編集:オブジェクトを使用したくないことに少し遅れて気づきました。ドキュメントでは、を使用できることを示していますがsemantic_form_for :login、ネストされた/名前空間のあるフォームでは機能しない可能性があります。おそらくurlwith:url => admin_add_range_dids_pathまたは同様のものを指定する必要があります。rake routes正しい名前を見つけるためにチェックしてください。モデルがActiveAdminまたはFormtasticのどちらによって呼び出されているかわからないため、それでも機能しない可能性がありますが、試す価値はあります。

于 2012-04-11T11:45:46.127 に答える