Рельсы показывают поле выбора категории и перенаправляют на основе выбора

Я пытаюсь найти способ, которым поле выбора заполняется категориями, и когда пользователь выбирает категорию и отправляет ее, они перенаправляются на страницу выбранных категорий, где отображаются все списки, помеченные этой категорией.

в основном это отношение 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' на ваши маршруты. Это не так хорошо, как маршрут по умолчанию, но это может решить вашу проблему.

Другие вопросы по тегам