Skip to content

Upgraded nested-model-form-revised to work with Rails 4 #5

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/.bundle
/log/*.log
/tmp
.idea
public/assets
questionnaire-rails4/public/assets
questionnaire-rails4/tmp
questionnaire-rails4/log/*

1 change: 1 addition & 0 deletions questionnaire-rails4/.ruby-gemset
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
questionnaire-rails4
1 change: 1 addition & 0 deletions questionnaire-rails4/.ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ruby-2.0.0.p353
11 changes: 11 additions & 0 deletions questionnaire-rails4/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
source 'https://rubygems.org'

gem 'rails', '4.1.8'

gem 'sqlite3'

gem 'sass-rails'
gem 'coffee-rails'
gem 'jquery-rails', '3.1.2'
gem 'uglifier', '>= 1.0.3'

101 changes: 101 additions & 0 deletions questionnaire-rails4/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
GEM
remote: https://rubygems.org/
specs:
actionmailer (4.1.8)
actionpack (= 4.1.8)
actionview (= 4.1.8)
mail (~> 2.5, >= 2.5.4)
actionpack (4.1.8)
actionview (= 4.1.8)
activesupport (= 4.1.8)
rack (~> 1.5.2)
rack-test (~> 0.6.2)
actionview (4.1.8)
activesupport (= 4.1.8)
builder (~> 3.1)
erubis (~> 2.7.0)
activemodel (4.1.8)
activesupport (= 4.1.8)
builder (~> 3.1)
activerecord (4.1.8)
activemodel (= 4.1.8)
activesupport (= 4.1.8)
arel (~> 5.0.0)
activesupport (4.1.8)
i18n (~> 0.6, >= 0.6.9)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.1)
tzinfo (~> 1.1)
arel (5.0.1.20140414130214)
builder (3.2.2)
coffee-rails (4.1.0)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.9.1.1)
erubis (2.7.0)
execjs (2.5.2)
i18n (0.7.0)
jquery-rails (3.1.2)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
json (1.8.3)
mail (2.6.3)
mime-types (>= 1.16, < 3)
mime-types (2.6.1)
minitest (5.7.0)
rack (1.5.5)
rack-test (0.6.3)
rack (>= 1.0)
rails (4.1.8)
actionmailer (= 4.1.8)
actionpack (= 4.1.8)
actionview (= 4.1.8)
activemodel (= 4.1.8)
activerecord (= 4.1.8)
activesupport (= 4.1.8)
bundler (>= 1.3.0, < 2.0)
railties (= 4.1.8)
sprockets-rails (~> 2.0)
railties (4.1.8)
actionpack (= 4.1.8)
activesupport (= 4.1.8)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (10.4.2)
sass (3.4.16)
sass-rails (5.0.3)
railties (>= 4.0.0, < 5.0)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (~> 1.1)
sprockets (3.2.0)
rack (~> 1.0)
sprockets-rails (2.3.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
sprockets (>= 2.8, < 4.0)
sqlite3 (1.3.10)
thor (0.19.1)
thread_safe (0.3.5)
tilt (1.4.1)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (2.7.1)
execjs (>= 0.3.0)
json (>= 1.8.0)

PLATFORMS
ruby

DEPENDENCIES
coffee-rails
jquery-rails (= 3.1.2)
rails (= 4.1.8)
sass-rails
sqlite3
uglifier (>= 1.0.3)
9 changes: 9 additions & 0 deletions questionnaire-rails4/README.rdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
= RailsCasts Example Application

Run these commands to try it out.

bundle
rake db:setup
rails s

Requires Ruby 1.9.2 or later to run.
7 changes: 7 additions & 0 deletions questionnaire-rails4/Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)

Questionnaire::Application.load_tasks
Binary file added questionnaire-rails4/app/assets/images/rails.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions questionnaire-rails4/app/assets/javascripts/application.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require surveys

14 changes: 14 additions & 0 deletions questionnaire-rails4/app/assets/javascripts/surveys.js.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
jQuery ->
$('form').on 'click', '.remove_fields', (event) ->
$(this).prev('input[type=hidden]').val('1')
$(this).closest('fieldset').hide()
event.preventDefault()

$('form').on 'click', '.add_fields', (event) ->
time = new Date().getTime()
regexp = new RegExp($(this).data('id'), 'g')
$(this).before($(this).data('fields').replace(regexp, time))
event.preventDefault()
93 changes: 93 additions & 0 deletions questionnaire-rails4/app/assets/stylesheets/application.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
*= require_tree .
*/

html, body {
background-color: #4B7399;
font-family: Verdana, Helvetica, Arial;
font-size: 14px;
}

a img {
border: none;
}

a {
color: #0000FF;
}

.clear {
clear: both;
height: 0;
overflow: hidden;
}

#container {
width: 75%;
margin: 0 auto;
background-color: #FFF;
padding: 20px 40px;
border: solid 1px black;
margin-top: 20px;
}

#flash_notice, #flash_error, #flash_alert {
padding: 5px 8px;
margin: 10px 0;
}

#flash_notice {
background-color: #CFC;
border: solid 1px #6C6;
}

#flash_error, #flash_alert {
background-color: #FCC;
border: solid 1px #C66;
}

.field_with_errors {
display: inline;
}

.error_messages {
width: 400px;
border: 2px solid #CF0000;
padding: 0px;
padding-bottom: 12px;
margin-bottom: 20px;
background-color: #f0f0f0;
font-size: 12px;
}

.error_messages h2 {
text-align: left;
font-weight: bold;
padding: 5px 10px;
font-size: 12px;
margin: 0;
background-color: #c00;
color: #fff;
}

.error_messages p {
margin: 8px 10px;
}

.error_messages ul {
margin-bottom: 0;
}

form .field, form .actions {
margin: 12px 0;
}
51 changes: 51 additions & 0 deletions questionnaire-rails4/app/assets/stylesheets/surveys.css.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// Place all the styles related to the surveys controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
.article {
h2 {
font-size: 18px;
margin-top: 20px;
margin-bottom: 3px;
}
}

.questions {
list-style: none;
font-weight: bold;
margin: 0;
padding: 0;
> li {
margin: 20px 0;
padding: 0;
}
}

.answers {
list-style: upper-alpha;
font-weight: normal;
margin: 0;
padding: 0;
> li {
margin: 5px 0;
margin-left: 25px;
}
}

form > fieldset {
border: none;
border: solid 1px #CCC;
padding: 10px 15px;
margin: 15px 0;
fieldset {
border: none;
margin: 0;
margin: 10px 0;
padding: 0;
}
}

textarea {
height: 40px;
width: 350px;
margin-top: 3px;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class ApplicationController < ActionController::Base
protect_from_forgery
end
53 changes: 53 additions & 0 deletions questionnaire-rails4/app/controllers/surveys_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
class SurveysController < ApplicationController
def index
@surveys = Survey.all
end

def show
@survey = Survey.find(params[:id])
end

def new
@survey = Survey.new
end

def create
@survey = Survey.new(survey_params)
if @survey.save

redirect_to @survey, notice: "Successfully created survey."
else
render :new
end
end

def edit
@survey = Survey.find(params[:id])
end

def update
@survey = Survey.find(params[:id])
if @survey.update(survey_params)
redirect_to @survey, notice: "Successfully updated survey."
else
render :edit
end
end

def destroy
@survey = Survey.find(params[:id])
@survey.destroy
redirect_to surveys_url, notice: "Successfully deleted survey."
end

private

def survey_params
args = params.require( :survey ).permit( :id, :name,
{questions_attributes: [ :id, :content, :_destroy,
answers_attributes: [ :id, :content, :_destroy ]] } )

args
end

end
11 changes: 11 additions & 0 deletions questionnaire-rails4/app/helpers/application_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module ApplicationHelper
def link_to_add_fields(name, f, association)
new_object = f.object.send(association).klass.new
id = new_object.object_id
fields = f.fields_for(association, new_object, child_index: id) do |builder|
render(association.to_s.singularize + "_fields", f: builder)
end
link = link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
link
end
end
2 changes: 2 additions & 0 deletions questionnaire-rails4/app/helpers/surveys_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module SurveysHelper
end
Empty file.
Empty file.
Loading