選択ボックスにカテゴリを入力する方法を見つけようとしています。ユーザーがカテゴリを選択して送信すると、選択したカテゴリ ページにリダイレクトされ、そのカテゴリでタグ付けされたすべてのリストが表示されます。
基本的には、リストが has_and_belongs_to_many のカテゴリに、またその逆の habtm 関係であり、カテゴリ コントローラを介して、すべてのカテゴリがインデックス ビューの選択ボックスにリストされ、特定のカテゴリを選択すると、そのカテゴリのすべてのリストを表示するようにリダイレクトする必要があります。
これは私がカテゴリーインデックスページに持っているものです
<ul>
<% @categories.each do |category| %>
<li><%= link_to category.name, category_path(category) %></li>
<% end %>
</ul>
<%= form_for :categories, :url => {:action => :show}, :method => "get" do |f| %>
<div class="field">
<%= f.label :category %><br />
<%= collection_select(:name, :id, Category.all, :id, :name) %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
送信すると、URL のみが更新されます。このように - localhost:3000/categories?utf8=%E2%9C%93&name%5Bid%5D=1&commit=Submit
ul list を試してみましたが、うまくいきました。しかし、セレクトボックスリストでそれを解決することはできません
カテゴリ コントローラ
def index
@categories = Category.all
end
def show
@category = Category.find(params[:id])
end
なにが問題ですか
アップデート
ねえ、私はこのSQLをソートするようにしました -
def show
@Category = Category.find_by_sql ["select place from listings l , categories c, categories_listings cl where c.id = cl.category_id and l.id = cl.listing_id and name in (?,?)" , params[:name][:id] , params[:name][:id]]
end
インデックスページで、フォームを更新しました-
<div class="field">
<%= f.label :category %><br />
<%= collection_select(:name, :id, Category.all, :id, :name) %>
</div>
<div class="field">
<%= f.label :category %><br />
<%= collection_select(:name, :id, Category.all, :id, :name) %>
</div>
ページを表示
<ul>
<% @Category.each do |c| %>
<li><%= c %></li>
<% end %>
</ul>
-選択ボックスが正しいパラメーターにマッピングされておらず、2 番目の選択にのみマッピングされているため、結果が得られません。どうすればこれを修正できますか、それとも正しいですか