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
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