基本的に小さなコンテンツ管理システムである Web サイトを構築しています。(ユーザーがサイトのほとんどのコンテンツを動的に変更できるという意味で)
私の Rails アプリには、Category と Subcategory の 2 つのモデルがあります。カテゴリには多くのサブカテゴリがあり、サブカテゴリはカテゴリに属します。
各サブカテゴリには位置フィールドがあり、カテゴリの下に表示される場所を指定します。
フォームでサブカテゴリを作成するとき、データベース内のすべてのカテゴリのリストからカテゴリを選択するオプションをユーザーに持たせたいです(これは正常に機能しています)。次に、そのカテゴリ内で現在利用可能なポジションに基づいて、ポジション フィールド (ドロップダウン ボックス) を更新します。
Application Controller でサブカテゴリの利用可能な位置を追跡するための現在のアイデアは次のとおりです。
def subcategory_count(subcategory)
category = subcategory.category
@count = category.subcategories.count
end
次に +1 を追加し@count
て、使用可能な位置 +1 を取得します。(これを行うより良い方法がある場合は、私に知らせてください。)
私は現在、動的選択メニューの改訂版である Ryan Bates の railscasts 88 改訂版をフォローしています。これが私のフォームが今どのように見えるかです。
<%= form_for(@subcategory) do |f| %>
<p>
<%= f.label(:name) %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label(:category_id) %>
<%= f.collection_select :category_id, Category.order(:position), :id, :name, include_blank: true %>
</p>
<p>
<%= f.label :position, "Position" %>
<%= f.grouped_collection_select :position, Category.order(:position), :subcategories, :name, :position, :position%>
</p>
<p>
<%= f.submit("Submit") %>
</p>
<% end %>
このコードの問題は、+1を追加できるようにintとして表示する必要があることです。そうしないと、データベースにサブカテゴリがない場合、空白が表示され、「1」の位置を選択できなくなります.
そのため、フィールドを更新してカテゴリ内の利用可能なポジションを表示する方法を見つける必要がありますが、それを正確に行う方法がわかりません。どんな助けでも大歓迎です。