Re: How to navigate between view using select

Chirag Singhal
Thu, 18 Aug 2011 16:58:10 -0000

There are few issue in this:
1. You should not be doing sql queries directly from views, instead set the
instance variable in controller and pass it to view.
2. Your form is submitting to /course/show, instead it should be
/course/list
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
"list"
action should be "index"
5. Your select field should set "institute", "id" instead of
"select",
"name"
6. Course list action should filter the course list based on the institute
id, something like Course.find_by_institute_id(params[:institute][:id])

Fix these and maybe you will figure out a solution.


Chirag
http://sumeruonrails.com



On Thu, Aug 18, 2011 at 10:10 PM, kevin ng''eno
<lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:

> 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
>
=========================================================================>
/app/controller/Course.rb
>
> class CourseController < ApplicationController
>    layout ''standard''
>   def list
>       @courses = Course.find(:all)
>   end
>   def show
>      @course = Course.find(params[:id])
>   end
>   def new
>      @courses = Course.new
>      @institutes = Institute.find(:all)
>     # @cfilters = CourseFilter.find(params[:id])
>   end
>   def create
>      @course = Course.new(params[:course])
>      if @course.save
>            redirect_to :action => ''list''
>      else
>            flash[:warning]="Failed to "
>            @courses = Course.find(:all)
>            render :action => ''new''
>      end
>   end
> end
>
>
=========================================================================>
/app/views/institute/list.html.erb
>
> <% if @institutes.blank? %>
> There are not any institutes currently in the system.
> <% else %>
> Select your chosen Institution
> <form action="/course/show" method="submit" id =
"course_id">
> <%= select ("submit", "name",
Institute.find(:all).collect {|c| [
> c.name, c.id ] }, :prompt => "Select Institute", :onchange
=>
> "this.form.submit();")%>
>
> <%= submit_tag "Proceed To Courses"%>
>
> <%end%>
>
> <%= link_to "Add new College", {:action =>
''new'' }%>
> ======================================================================>
/app/views/courses/list.html.erb
> <% 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
=> c.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
>
> --
> Posted via http://www.ruby-forum.com/.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To unsubscribe from this group, send email to
>
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>