Модели проекта и категории находятся в отношении has_and_belongs_to_many. Часть, показанная ниже, используется в разных представлениях, чтобы показать выпадающее меню со всеми доступными категориями. Проекты в списке под раскрывающимся меню отображаются в соответствии с выбором, который пользователь сделал в раскрывающемся меню.
Помимо других категорий, есть категория «Все», членом которой является каждый проект. Это также первая запись в category-db-table, потому что она была вставлена во время загрузки миграций в базу данных.
Сейчас ошибки нет, но независимо от того, какую категорию я выбрал, она перезагружает страницу с категорией «Все».
Есть идеи, что мне нужно изменить в коде, упомянутом ниже, чтобы он работал так, как я хочу? Спасибо за вашу помощь!
Частично с выпадающим меню и списком проектов
<!-- category dropdown -->
<% form_for category_url(:id), :html => {:method => :get} do |f| %>
<label>Categories</label>
<%= f.collection_select(:category_ids , Category.find(:all), :id , :name) %>
<%= f.submit "Show" %>
<% end %>
<!-- project list -->
<ul class="projectlist">
<% @projects.each do |_project| %>
<li>
<%= link_to(_project.name, _project) %>
</li>
<% end %>
</ul>
Выход из системы после выбора категории с идентификатором 2 в раскрывающемся меню
Processing ProjectsController#index (for 127.0.0.1 at 2009-02-20 17:26:10) [GET]
Parameters: {"commit"=>"Show", "http://localhost:3000/categories/id"=>{"category_ids"=>"2"}}
Категория Модель
class Category < ActiveRecord::Base
has_and_belongs_to_many :projects, :join_table => "categories_projects"
end
Категории Контроллер
class CategoriesController < ApplicationController
def show
@projects = Category.find(params[:id]).projects.find(:all)
respond_to do |format|
format.html # show.html.erb
end
end
end
Модель проекта
class Project < ActiveRecord::Base
has_and_belongs_to_many :categories, :join_table => "categories_projects"
end
Контроллер проектов
class ProjectsController < ApplicationController
def show
@projects = Project.find(:all)
@project = Project.find(params[:id])
respond_to do |format|
format.html # show.html.erb
end
end
def index
@projects = Project.find(:all)
respond_to do |format|
format.html # index.html.erb
end
end
end
часть вывода «Рейк-маршруты»
category GET /categories/:id {:controller=>"categories", :action=>"show"}