When the user first visits the page I want all the checkboxes to be checked in my index page. Below is the code from my controller and index.html.haml

Posted by user1760920 on Stack Overflow See other posts from Stack Overflow or by user1760920
Published on 2012-10-20T04:56:30Z Indexed on 2012/10/20 5:01 UTC
Read the original article Hit count: 107

Filed under:
|
|
|

I want the checkbox to be checked when the user visits the page for the first time.

-# This file is app/views/movies/index.html.haml

%h1 All Movies
= form_tag movies_path, :method => :get, :id => 'ratings_form' do
  Include:
  - @all_ratings.each do |rating|
    = rating
    = check_box_tag "ratings[#{rating}]", "1", @checked_ratings.include?(rating), :id => "ratings_#{rating}",
  = submit_tag 'Refresh', :id => 'ratings_submit'

%table#movies
  %thead
    %tr
      %th{:class => ("hilite" if @sort == "title")}= link_to "Movie Title", movies_path( :sort => "title", :ratings => @checked_ratings), :id => "title_header" 
      %th Rating
      %th{:class => ("hilite" if @sort == "release_date")}= link_to "Release Date", movies_path( :sort => "release_date", :ratings => @checked_ratings), :id => "release_date_header"
      %th More Info
  %tbody
    - @movies.each do |movie|
      %tr
        %td= movie.title 
        %td= movie.rating
        %td= movie.release_date
        %td= link_to "More about #{movie.title}", movie_path(movie)

= link_to 'Add new movie', new_movie_path

#This is my Controller

    class MoviesController < ApplicationController

  def show
    id = params[:id] # retrieve movie ID from URI route
    @movie = Movie.find(id) # look up movie by unique ID
    # will render app/views/movies/show.<extension> by default
  end

  def index
    #get all the ratings available 
    @all_ratings = Movie.all_ratings
    @checked_ratings = (params[:ratings].present? ? params[:ratings] : [])
    @sort = params[:sort]
    @movies = Movie.scoped

    if @sort && Movie.attribute_names.include?(@sort)
      @movies = @movies.order @sort
    end
    id @checked_ratings.empty?
      @checked_ratings = @all_ratings
    end
    unless @checked_ratings.empty?
      @movies = @movies.where :rating => @checked_ratings.keys
    end
  end

  def new
    # default: render 'new' template
  end

  def create
    @movie = Movie.create!(params[:movie])
    flash[:notice] = "#{@movie.title} was successfully created."
    redirect_to movies_path
  end

  def edit
    @movie = Movie.find params[:id]
  end

  def update
    @movie = Movie.find params[:id]
    @movie.update_attributes!(params[:movie])
    flash[:notice] = "#{@movie.title} was successfully updated."
    redirect_to movie_path(@movie)
  end

  def destroy
    @movie = Movie.find(params[:id])
    @movie.destroy
    flash[:notice] = "Movie '#{@movie.title}' deleted."
    redirect_to movies_path
  end
end

In the controller, I set the @checked_rating to be @all_rating if the @checked.rating is empty but it does not do anything. I tried putting :checked => true in the index.html.haml on the check_box_tag but that makes the checkboxes checked everytime the page is refreshed. Everytime I check a particular checkbox and hit refresh button the page loads with all the checkboxes checked. Please help me with this. Thank you in Advance.

© Stack Overflow or respective owner

Related posts about html

Related posts about ruby-on-rails