Created
April 3, 2014 01:12
-
-
Save radar/9946577 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<% provide(:title, "Create course") %> | |
<div class="container"> | |
<div class="row"> | |
<div class="col-md-4"> | |
<div class="custom-form chapter"> | |
<%= form_for(@course) do |f| %> | |
<%= render 'shared/error_messages', object: f.object %> | |
<%= f.label :title %> | |
<%= f.text_field :title, class: 'form-control' %> | |
<%= f.label :description %> | |
<%= f.text_area :description, class: 'form-control', :cols => "10", :rows => "10" %> | |
<%= f.label :price %> | |
<%= f.number_field :price, class: 'form-control' %> | |
<%= f.submit "Save", class: "btn btn-large btn-primary btn-block btn-course" %> | |
<% end %> | |
</div> | |
</div> | |
<% if @course.persisted? %> | |
<div class="col-md-8"> | |
<ul class="nav nav-tabs"> | |
<li class="active"><a href="#">Chapter 1</a></li> | |
<li><a href="#">New Chapter</a></li> | |
</ul> | |
<%= link_to "New Chapter", new_course_chapter_path(@course) %> | |
</div> | |
<% end %> | |
</div> | |
</div> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Chapter < ActiveRecord::Base | |
belongs_to :course | |
default_scope -> { order("number ASC") } | |
validates :title, presence: true, length: { maximum: 80 } | |
validates :number, presence: true | |
validates :course_id, presence: true | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ChaptersController < ApplicationController | |
before_action :set_course | |
before_action :set_chapter, only: [:show, :edit, :update, :destroy] | |
before_action :signed_in_user, only: [:create, :destroy] | |
def index | |
end | |
def new | |
@chapter = @course.chapters.build | |
end | |
def show | |
end | |
def create | |
@chapter = @course.chapters.build(chapter_params) | |
if @chapter.save | |
flash[:success] = "Chapter created! :)" | |
redirect_to [@course, @chapter] | |
else | |
flash[:danger] = "Chapter has not been created! :(" | |
render 'new' | |
end | |
end | |
def destroy | |
end | |
private | |
def chapter_params | |
params.require(:chapter).permit(:title, :number) | |
end | |
def set_course | |
@course = Course.find(params[:course_id]) | |
end | |
def set_chapter | |
@chapter = @course.chapters.find(params[:id]) | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Course < ActiveRecord::Base | |
belongs_to :user | |
has_many :chapters, dependent: :destroy | |
default_scope -> { order("created_at DESC") } | |
validates :user_id, presence: true | |
validates :title, presence: true, length: { maximum: 80 } | |
validates :description, presence: true, length: { maximum: 350 } | |
validates :price, presence: true | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CoursesController < ApplicationController | |
before_action :signed_in_user, only: [:create, :destroy] | |
before_action :correct_user, only: :destroy | |
before_action :set_course, only: [:show, :edit, :update, :destroy] | |
def index | |
@courses = Course.all | |
end | |
def new | |
@course = Course.new | |
@chapter = @course.chapters.build | |
end | |
def show | |
@chapters = @course.chapters(page: params[:page]) | |
end | |
def create | |
@course = current_user.courses.build(course_params) | |
if @course.save | |
flash[:success] = "Course created! :)" | |
redirect_to @course | |
else | |
flash[:danger] = "Course has not been created! :(" | |
render 'new' | |
end | |
end | |
def destroy | |
@course.destroy | |
flash[:success] = "Course deleted!" | |
redirect_to current_user | |
end | |
private | |
def course_params | |
params.require(:course).permit(:title, :description, :price) | |
end | |
def correct_user | |
@course = current_user.courses.find_by(id: params[:id]) | |
redirect_to current_user if @course.nil? | |
end | |
def set_course | |
@course = Course.find(params[:id]) | |
rescue ActiveRecord::RecordNotFound | |
flash[:danger] = "The course you were looking" + | |
" for could not be found." | |
redirect_to courses_path | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ActionController::UrlGenerationError in Courses#new | |
Showing /Users/juanmnl/code/rails/elearning/app/views/courses/new.html.erb where line #30 raised: | |
No route matches {:course_id=>#<Course id: nil, title: nil, description: nil, price: nil, user_id: nil, rating: nil, created_at: nil, updated_at: nil, published: nil>} missing required keys: [:course_id] | |
Extracted source (around line #30): | |
<li class="active"><a href="#">Chapter 1</a></li> | |
<li><a href="#">New Chapter</a></li> | |
</ul> | |
<%= link_to "New Chapter", new_course_chapter_path(@course) %> | |
</div> | |
</div> | |
</div> | |
/////////// FULL TRACE | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:223:in `raise_generation_error' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:192:in `block in optimized_helper' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:188:in `zip' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:188:in `optimized_helper' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:175:in `call' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:274:in `block (2 levels) in define_url_helper' | |
app/views/courses/new.html.erb:30:in `_app_views_courses_new_html_erb___217999686602933813_70155231674840' | |
actionpack (4.0.2) lib/action_view/template.rb:143:in `block in render' | |
activesupport (4.0.2) lib/active_support/notifications.rb:161:in `instrument' | |
actionpack (4.0.2) lib/action_view/template.rb:141:in `render' | |
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:49:in `block (2 levels) in render_template' | |
actionpack (4.0.2) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument' | |
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `block in instrument' | |
activesupport (4.0.2) lib/active_support/notifications/instrumenter.rb:20:in `instrument' | |
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `instrument' | |
actionpack (4.0.2) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument' | |
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:48:in `block in render_template' | |
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:56:in `render_with_layout' | |
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:47:in `render_template' | |
actionpack (4.0.2) lib/action_view/renderer/template_renderer.rb:17:in `render' | |
actionpack (4.0.2) lib/action_view/renderer/renderer.rb:42:in `render_template' | |
actionpack (4.0.2) lib/action_view/renderer/renderer.rb:23:in `render' | |
actionpack (4.0.2) lib/abstract_controller/rendering.rb:127:in `_render_template' | |
actionpack (4.0.2) lib/action_controller/metal/streaming.rb:219:in `_render_template' | |
actionpack (4.0.2) lib/abstract_controller/rendering.rb:120:in `render_to_body' | |
actionpack (4.0.2) lib/action_controller/metal/rendering.rb:33:in `render_to_body' | |
actionpack (4.0.2) lib/action_controller/metal/renderers.rb:26:in `render_to_body' | |
actionpack (4.0.2) lib/abstract_controller/rendering.rb:97:in `render' | |
actionpack (4.0.2) lib/action_controller/metal/rendering.rb:16:in `render' | |
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:41:in `block (2 levels) in render' | |
activesupport (4.0.2) lib/active_support/core_ext/benchmark.rb:12:in `block in ms' | |
/Users/juanmnl/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/benchmark.rb:294:in `realtime' | |
activesupport (4.0.2) lib/active_support/core_ext/benchmark.rb:12:in `ms' | |
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:41:in `block in render' | |
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:84:in `cleanup_view_runtime' | |
activerecord (4.0.2) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime' | |
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:40:in `render' | |
actionpack (4.0.2) lib/action_controller/metal/implicit_render.rb:10:in `default_render' | |
actionpack (4.0.2) lib/action_controller/metal/implicit_render.rb:5:in `send_action' | |
actionpack (4.0.2) lib/abstract_controller/base.rb:189:in `process_action' | |
actionpack (4.0.2) lib/action_controller/metal/rendering.rb:10:in `process_action' | |
actionpack (4.0.2) lib/abstract_controller/callbacks.rb:18:in `block in process_action' | |
activesupport (4.0.2) lib/active_support/callbacks.rb:433:in `_run__4248797210385187787__process_action__callbacks' | |
activesupport (4.0.2) lib/active_support/callbacks.rb:80:in `run_callbacks' | |
actionpack (4.0.2) lib/abstract_controller/callbacks.rb:17:in `process_action' | |
actionpack (4.0.2) lib/action_controller/metal/rescue.rb:29:in `process_action' | |
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action' | |
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `block in instrument' | |
activesupport (4.0.2) lib/active_support/notifications/instrumenter.rb:20:in `instrument' | |
activesupport (4.0.2) lib/active_support/notifications.rb:159:in `instrument' | |
actionpack (4.0.2) lib/action_controller/metal/instrumentation.rb:30:in `process_action' | |
actionpack (4.0.2) lib/action_controller/metal/params_wrapper.rb:245:in `process_action' | |
activerecord (4.0.2) lib/active_record/railties/controller_runtime.rb:18:in `process_action' | |
actionpack (4.0.2) lib/abstract_controller/base.rb:136:in `process' | |
actionpack (4.0.2) lib/abstract_controller/rendering.rb:44:in `process' | |
actionpack (4.0.2) lib/action_controller/metal.rb:195:in `dispatch' | |
actionpack (4.0.2) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' | |
actionpack (4.0.2) lib/action_controller/metal.rb:231:in `block in action' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:80:in `call' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:80:in `dispatch' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:48:in `call' | |
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:71:in `block in call' | |
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:59:in `each' | |
actionpack (4.0.2) lib/action_dispatch/journey/router.rb:59:in `call' | |
actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:680:in `call' | |
rack (1.5.2) lib/rack/etag.rb:23:in `call' | |
rack (1.5.2) lib/rack/conditionalget.rb:25:in `call' | |
rack (1.5.2) lib/rack/head.rb:11:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/params_parser.rb:27:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/flash.rb:241:in `call' | |
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context' | |
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/cookies.rb:486:in `call' | |
activerecord (4.0.2) lib/active_record/query_cache.rb:36:in `call' | |
activerecord (4.0.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call' | |
activerecord (4.0.2) lib/active_record/migration.rb:369:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' | |
activesupport (4.0.2) lib/active_support/callbacks.rb:373:in `_run__2969075338233753350__call__callbacks' | |
activesupport (4.0.2) lib/active_support/callbacks.rb:80:in `run_callbacks' | |
actionpack (4.0.2) lib/action_dispatch/middleware/callbacks.rb:27:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/reloader.rb:64:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/remote_ip.rb:76:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' | |
railties (4.0.2) lib/rails/rack/logger.rb:38:in `call_app' | |
railties (4.0.2) lib/rails/rack/logger.rb:20:in `block in call' | |
activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:in `block in tagged' | |
activesupport (4.0.2) lib/active_support/tagged_logging.rb:25:in `tagged' | |
activesupport (4.0.2) lib/active_support/tagged_logging.rb:67:in `tagged' | |
railties (4.0.2) lib/rails/rack/logger.rb:20:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/request_id.rb:21:in `call' | |
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call' | |
rack (1.5.2) lib/rack/runtime.rb:17:in `call' | |
activesupport (4.0.2) lib/active_support/cache/strategy/local_cache.rb:83:in `call' | |
rack (1.5.2) lib/rack/lock.rb:17:in `call' | |
actionpack (4.0.2) lib/action_dispatch/middleware/static.rb:64:in `call' | |
rack (1.5.2) lib/rack/sendfile.rb:112:in `call' | |
railties (4.0.2) lib/rails/engine.rb:511:in `call' | |
railties (4.0.2) lib/rails/application.rb:97:in `call' | |
rack (1.5.2) lib/rack/lock.rb:17:in `call' | |
rack (1.5.2) lib/rack/content_length.rb:14:in `call' | |
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service' | |
/Users/juanmnl/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service' | |
/Users/juanmnl/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run' | |
/Users/juanmnl/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Elearning::Application.routes.draw do | |
resources :users | |
resources :sessions, only: [:new, :create, :destroy] | |
resources :courses do | |
resources :chapters | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment