Рельсы показывают поле выбора категории и перенаправляют на основе выбора
Я пытаюсь найти способ, которым поле выбора заполняется категориями, и когда пользователь выбирает категорию и отправляет ее, они перенаправляются на страницу выбранных категорий, где отображаются все списки, помеченные этой категорией.
в основном это отношение habtm, где списки категорий has_and_belongs_to_many и наоборот, а также через контроллер категорий, все категории перечисляются в поле выбора в представлении индекса, и выбор любой конкретной категории следует перенаправить, чтобы показать все списки в этой категории.
это то, что у меня есть на странице индекса категории
<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/category?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>
- поля выбора не отображаются на правильный параметр и отображаются только на второй выбор, который не дает результата. как я могу это исправить или я делаю это правильно
1 ответ
У вас, вероятно, есть проблемы с маршрутами. Если вы делаете resources :categories
в маршрутах route.rb для категории #show указывается /category /:id, поэтому ваша форма будет фактически указывать на индекс категории #.
То есть с вашей текущей настройкой идентификатор должен быть частью URL, а не параметром формы.
Попробуйте добавить get 'categories/show' => 'categories#show'
на ваши маршруты. Это не так хорошо, как маршрут по умолчанию, но это может решить вашу проблему.