How to navigate between view using select

Hi, im new to rails and I got a mind boggling issue.

I have a select form populated with Institutes names e.g University of
Yale. These records are obtained from the Institute ActiveRecord.The
institutes table has a many to many relationships with the course table.

My application should work such that when you select a certain institute
using a select() component and press the button proceed to view courses
available for the institute chosen. This will take you to a new page
with the courses.

My problem is that i don’t know how i will store selected institute id
and use it to select specific courses using the many to many
relationships… below are my code snippets


class CourseController < ApplicationController
layout ‘standard’
def list
@courses = Course.find(:all)
def show
@course = Course.find(params[:id])
def new
@courses =
@institutes = Institute.find(:all)
# @cfilters = CourseFilter.find(params[:id])
def create
@course =[:course])
redirect_to :action => ‘list’
flash[:warning]="Failed to "
@courses = Course.find(:all)
render :action => ‘new’


<% if @institutes.blank? %>

There are not any institutes currently in the system.

<% else %>

Select your chosen Institution

<%= select ("submit", "name", Institute.find(:all).collect {|c| [, ] }, :prompt => "Select Institute", :onchange => "this.form.submit();")%>

<%= submit_tag “Proceed To Courses”%>


<%= link_to “Add new College”, {:action => ‘new’ }%>

<% if @courses.blank? %>

There are not any courses currently in the system.

<% else %>

Select your chosen Course

    <% Course.find(params[:id]).each do |c| %>
  • <%= link_to c.course_name, :action => "show", :id => %>
  • <% end %>
<%= collection_select(:course,:id,@courses,:id,:course_name) %> --> <%= submit_tag "Proceed" %> <% end %>

<%= link_to "Add new College", {:action => 'new' }%>


Would really need you help people. Thanx

Got the same problem myself and I’m yet to crack it!

There are few issue in this:

  1. You should not be doing sql queries directly from views, instead set
    instance variable in controller and pass it to view.
  2. Your form is submitting to /course/show, instead it should be
  3. Controller name should be plural, you have got the name as Course
    Controller, but the corresponding views directory is “courses”
  4. To follow along with rails standards, you should be name of your
    action should be “index”
  5. Your select field should set “institute”, “id” instead of “select”,
  6. Course list action should filter the course list based on the
    id, something like Course.find_by_institute_id(params[:institute][:id])

Fix these and maybe you will figure out a solution.


Chirag S. wrote in post #1017338:

There are few issue in this:

Thanx alot Chirag, let me try out your hints . Will get back to you

Hello guys!

I am new in rails.

I am querying the courses table for specific courses that belong to
specific institute using this sql statement. I’m getting the same
courses for all the institutes that I have. Any help on what to put in
place of 1 or how to restructure my query will be highly appreciated.

Here is my query!

<%= select (“course_code”, “course_name”,Course.find_by_sql(“select, c.course_name from institutes as i, courses as c ,
institute_courses as ic where = ic.institute_id and =
ic.course_id and = 1;”).collect {|c| [ c.course_name, ] })%>

On Fri, Aug 19, 2011 at 9:36 AM, Charles O. [email protected]

I am querying the courses table for specific courses that belong to
specific institute using this sql statement.

Why are you writing SQL statements instead of taking advantage of
associations, one of Rails’ most powerful features?

Hassan S. ------------------------ [email protected]

twitter: @hassan