right-rails 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +20 -0
- data/README.textile +50 -0
- data/Rakefile +23 -0
- data/generators/right_rails/right_rails_generator.rb +41 -0
- data/generators/right_rails/templates/iframed.html.erb +10 -0
- data/generators/right_scaffold/right_scaffold_generator.rb +53 -0
- data/generators/right_scaffold/templates/controller.rb +99 -0
- data/generators/right_scaffold/templates/helper.rb +2 -0
- data/generators/right_scaffold/templates/layout.html.erb +18 -0
- data/generators/right_scaffold/templates/style.css +54 -0
- data/generators/right_scaffold/templates/view__form.html.erb +16 -0
- data/generators/right_scaffold/templates/view__item.html.erb +13 -0
- data/generators/right_scaffold/templates/view_edit.html.erb +6 -0
- data/generators/right_scaffold/templates/view_index.html.erb +9 -0
- data/generators/right_scaffold/templates/view_new.html.erb +5 -0
- data/generators/right_scaffold/templates/view_show.html.erb +10 -0
- data/init.rb +12 -0
- data/javascripts/right-autocompleter-src.js +303 -0
- data/javascripts/right-autocompleter.js +9 -0
- data/javascripts/right-behavior-src.js +240 -0
- data/javascripts/right-behavior.js +8 -0
- data/javascripts/right-calendar-src.js +855 -0
- data/javascripts/right-calendar.js +9 -0
- data/javascripts/right-dnd-src.js +555 -0
- data/javascripts/right-dnd.js +9 -0
- data/javascripts/right-effects-src.js +425 -0
- data/javascripts/right-effects.js +6 -0
- data/javascripts/right-events-src.js +369 -0
- data/javascripts/right-events.js +6 -0
- data/javascripts/right-json-src.js +176 -0
- data/javascripts/right-json.js +6 -0
- data/javascripts/right-lightbox-src.js +597 -0
- data/javascripts/right-lightbox.js +9 -0
- data/javascripts/right-rails-src.js +269 -0
- data/javascripts/right-rails.js +9 -0
- data/javascripts/right-rater-src.js +248 -0
- data/javascripts/right-rater.js +9 -0
- data/javascripts/right-selectable-src.js +507 -0
- data/javascripts/right-selectable.js +7 -0
- data/javascripts/right-slider-src.js +291 -0
- data/javascripts/right-slider.js +7 -0
- data/javascripts/right-sortable-src.js +221 -0
- data/javascripts/right-sortable.js +9 -0
- data/javascripts/right-src.js +4939 -0
- data/javascripts/right-tabs-src.js +776 -0
- data/javascripts/right-tabs.js +6 -0
- data/javascripts/right-tooltips-src.js +130 -0
- data/javascripts/right-tooltips.js +9 -0
- data/javascripts/right-ui-i18n-de.js +29 -0
- data/javascripts/right-ui-i18n-en-us.js +11 -0
- data/javascripts/right-ui-i18n-es.js +29 -0
- data/javascripts/right-ui-i18n-fr.js +29 -0
- data/javascripts/right-ui-i18n-jp.js +33 -0
- data/javascripts/right-ui-i18n-ru.js +29 -0
- data/javascripts/right-ui-i18n-uk.js +29 -0
- data/javascripts/right.js +10 -0
- data/lib/right-rails.rb +11 -0
- data/lib/right_rails/controller_extensions.rb +85 -0
- data/lib/right_rails/helpers/basic.rb +111 -0
- data/lib/right_rails/helpers/forms.rb +239 -0
- data/lib/right_rails/helpers/misc.rb +164 -0
- data/lib/right_rails/helpers/rails.rb +166 -0
- data/lib/right_rails/helpers.rb +5 -0
- data/lib/right_rails/java_script_generator.rb +313 -0
- data/lib/right_rails.rb +6 -0
- data/spec/lib/right_rails/controller_extensions_spec.rb +60 -0
- data/spec/lib/right_rails/helpers/basic_spec.rb +74 -0
- data/spec/lib/right_rails/helpers/forms_spec.rb +51 -0
- data/spec/lib/right_rails/helpers/misc_spec.rb +120 -0
- data/spec/lib/right_rails/helpers/rails_spec.rb +149 -0
- data/spec/lib/right_rails/java_script_generator_spec.rb +317 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +15 -0
- metadata +128 -0
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Nikolay V. Nemshilov
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.textile
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
h1. Welcome To RightRails
|
2
|
+
|
3
|
+
RightRails is a RubyOnRails plugin for RightJS javascript framework.
|
4
|
+
|
5
|
+
It works as a drop in replacement for all the Prototype/Scriptaculous
|
6
|
+
methods, plus it brings some more sweets and routine ajax operations
|
7
|
+
organization.
|
8
|
+
|
9
|
+
|
10
|
+
h2. Features
|
11
|
+
|
12
|
+
* Lightning fast RightJS library
|
13
|
+
* Transparent Prototype/Scriptaculous helpers replacement
|
14
|
+
* More powerful and flexible new JavaScript generator for RJS
|
15
|
+
* Conventional JavaScript interface for the most common AJAX operations
|
16
|
+
* Better controller level access to the rjs generator
|
17
|
+
* New ajax-friendly scaffold generator
|
18
|
+
* Remote files uploading organization
|
19
|
+
* Automatic RightJS modules inclusion handling (including i18n modules)
|
20
|
+
* Additional FormBuilder methods for calendar and autocomplete fields
|
21
|
+
* Underscored and ruby-like aliases for RightJS core methods
|
22
|
+
|
23
|
+
|
24
|
+
h2. Documentation
|
25
|
+
|
26
|
+
See the wiki-pages for the documentation
|
27
|
+
|
28
|
+
<a href="http://wiki.github.com/MadRabbit/right-rails">http://wiki.github.com/MadRabbit/right-rails</a>
|
29
|
+
|
30
|
+
|
31
|
+
h3. Usage
|
32
|
+
|
33
|
+
Install the plugin to your rails application
|
34
|
+
|
35
|
+
@script/plugin install git://github.com/MadRabbit/right-rails.git@
|
36
|
+
|
37
|
+
After that run the @right_rails@ generator, which will put all the JavaScripts in place
|
38
|
+
|
39
|
+
@script/generate right_rails@
|
40
|
+
|
41
|
+
You also will have an ajax-friendly scaffold generator
|
42
|
+
|
43
|
+
@script/generate right_scaffold Zing@
|
44
|
+
|
45
|
+
|
46
|
+
The rubygem is still coming soon.
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
Copyright (c) 2009 Nikolay V. Nemshilov, released under the MIT license
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the right_rails plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.libs << 'test'
|
12
|
+
t.pattern = 'test/**/*_test.rb'
|
13
|
+
t.verbose = true
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Generate documentation for the right_rails plugin.'
|
17
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
18
|
+
rdoc.rdoc_dir = 'rdoc'
|
19
|
+
rdoc.title = 'RightRails'
|
20
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
21
|
+
rdoc.rdoc_files.include('README')
|
22
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# Copies all the javascripts in place and updates them if necessary
|
3
|
+
#
|
4
|
+
|
5
|
+
class RightRailsGenerator < Rails::Generator::Base
|
6
|
+
|
7
|
+
mandatory_options :source => "#{File.dirname(__FILE__)}/../../javascripts"
|
8
|
+
|
9
|
+
def manifest
|
10
|
+
record do |m|
|
11
|
+
# creating the javascript directories
|
12
|
+
m.directory 'public/javascripts/right'
|
13
|
+
m.directory 'public/javascripts/right/i18n'
|
14
|
+
|
15
|
+
# copying the javascript files
|
16
|
+
Dir.open(options[:source]).each do |file|
|
17
|
+
unless ['.', '..'].include?(file)
|
18
|
+
destination = if ['right.js', 'right-src.js'].include?(file)
|
19
|
+
file
|
20
|
+
elsif file.include?('ui-i18n')
|
21
|
+
file.gsub('right-', 'right/').gsub('ui-i18n-', 'i18n/')
|
22
|
+
else
|
23
|
+
file.gsub('right-', 'right/')
|
24
|
+
end
|
25
|
+
|
26
|
+
m.file file, "public/javascripts/#{destination}", :chmod => 0644
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# creating the iframed uploads layout
|
31
|
+
m.directory "app/views/layouts"
|
32
|
+
m.file "/../generators/right_rails/templates/iframed.html.erb", "app/views/layouts/iframed.html.erb"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def banner
|
38
|
+
"Usage: #{$0} right_rails"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#
|
2
|
+
# This is pretty much the same thing as the native rails scaffold generator
|
3
|
+
# only without tests, plust it adds the '.js' format responses and fixes
|
4
|
+
# the templates organization
|
5
|
+
#
|
6
|
+
#
|
7
|
+
class RightScaffoldGenerator < ScaffoldGenerator
|
8
|
+
def manifest
|
9
|
+
record do |m|
|
10
|
+
# Check for class naming collisions.
|
11
|
+
m.class_collisions("#{controller_class_name}Controller", "#{controller_class_name}Helper")
|
12
|
+
m.class_collisions(class_name)
|
13
|
+
|
14
|
+
# Controller, helper, views, test and stylesheets directories.
|
15
|
+
m.directory(File.join('app/models', class_path))
|
16
|
+
m.directory(File.join('app/controllers', controller_class_path))
|
17
|
+
m.directory(File.join('app/helpers', controller_class_path))
|
18
|
+
m.directory(File.join('app/views', controller_class_path, controller_file_name))
|
19
|
+
m.directory(File.join('app/views/layouts', controller_class_path))
|
20
|
+
m.directory(File.join('public/stylesheets', class_path))
|
21
|
+
|
22
|
+
for action in scaffold_views
|
23
|
+
m.template(
|
24
|
+
"view_#{action}.html.erb",
|
25
|
+
File.join('app/views', controller_class_path, controller_file_name, "#{action}.html.erb")
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
m.template "view__form.html.erb", File.join('app/views', controller_class_path, controller_file_name, "_form.html.erb")
|
30
|
+
m.template "view__item.html.erb", File.join('app/views', controller_class_path, controller_file_name, "_#{file_name}.html.erb")
|
31
|
+
|
32
|
+
# Layout and stylesheet.
|
33
|
+
m.template('layout.html.erb', File.join('app/views/layouts', controller_class_path, "#{controller_file_name}.html.erb"))
|
34
|
+
m.template('style.css', 'public/stylesheets/scaffold.css')
|
35
|
+
|
36
|
+
m.template(
|
37
|
+
'controller.rb', File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb")
|
38
|
+
)
|
39
|
+
|
40
|
+
m.template('helper.rb', File.join('app/helpers', controller_class_path, "#{controller_file_name}_helper.rb"))
|
41
|
+
|
42
|
+
m.route_resources controller_file_name
|
43
|
+
|
44
|
+
m.dependency 'model', [name] + @args, :collision => :skip
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
def banner
|
51
|
+
"Usage: #{$0} right_scaffold ModelName [field:type, field:type]"
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
class <%= controller_class_name %>Controller < ApplicationController
|
2
|
+
# GET /<%= table_name %>
|
3
|
+
# GET /<%= table_name %>.xml
|
4
|
+
def index
|
5
|
+
@<%= table_name %> = <%= class_name %>.all
|
6
|
+
|
7
|
+
respond_to do |format|
|
8
|
+
format.html # index.html.erb
|
9
|
+
format.xml { render :xml => @<%= table_name %> }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# GET /<%= table_name %>/1
|
14
|
+
# GET /<%= table_name %>/1.xml
|
15
|
+
def show
|
16
|
+
@<%= file_name %> = <%= class_name %>.find(params[:id])
|
17
|
+
|
18
|
+
respond_to do |format|
|
19
|
+
format.html # show.html.erb
|
20
|
+
format.xml { render :xml => @<%= file_name %> }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# GET /<%= table_name %>/new
|
25
|
+
# GET /<%= table_name %>/new.xml
|
26
|
+
def new
|
27
|
+
@<%= file_name %> = <%= class_name %>.new
|
28
|
+
|
29
|
+
respond_to do |format|
|
30
|
+
format.html # new.html.erb
|
31
|
+
format.xml { render :xml => @<%= file_name %> }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# GET /<%= table_name %>/1/edit
|
36
|
+
# GET /<%= table_name %>/1/edit.js
|
37
|
+
def edit
|
38
|
+
@<%= file_name %> = <%= class_name %>.find(params[:id])
|
39
|
+
|
40
|
+
respond_to do |format|
|
41
|
+
format.js { render rjs.show_form_for(@<%= file_name %>) }
|
42
|
+
format.any # edit.html.erb
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# POST /<%= table_name %>
|
47
|
+
# POST /<%= table_name %>.xml
|
48
|
+
# POST /<%= table_name %>.js
|
49
|
+
def create
|
50
|
+
@<%= file_name %> = <%= class_name %>.new(params[:<%= file_name %>])
|
51
|
+
|
52
|
+
respond_to do |format|
|
53
|
+
if @<%= file_name %>.save
|
54
|
+
flash[:notice] = '<%= class_name %> was successfully created.'
|
55
|
+
format.html { redirect_to(@<%= file_name %>) }
|
56
|
+
format.xml { render :xml => @<%= file_name %>, :status => :created, :location => @<%= file_name %> }
|
57
|
+
format.js { render rjs.insert_and_care(@<%= file_name %>) }
|
58
|
+
else
|
59
|
+
format.html { render :action => "new" }
|
60
|
+
format.xml { render :xml => @<%= file_name %>.errors, :status => :unprocessable_entity }
|
61
|
+
format.js { render rjs.replace_form_for(@<%= file_name %>) }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# PUT /<%= table_name %>/1
|
67
|
+
# PUT /<%= table_name %>/1.xml
|
68
|
+
# PUT /<%= table_name %>/1.js
|
69
|
+
def update
|
70
|
+
@<%= file_name %> = <%= class_name %>.find(params[:id])
|
71
|
+
|
72
|
+
respond_to do |format|
|
73
|
+
if @<%= file_name %>.update_attributes(params[:<%= file_name %>])
|
74
|
+
flash[:notice] = '<%= class_name %> was successfully updated.'
|
75
|
+
format.html { redirect_to(@<%= file_name %>) }
|
76
|
+
format.xml { head :ok }
|
77
|
+
format.js { render rjs.replace_and_care(@<%= file_name %>) }
|
78
|
+
else
|
79
|
+
format.html { render :action => "edit" }
|
80
|
+
format.xml { render :xml => @<%= file_name %>.errors, :status => :unprocessable_entity }
|
81
|
+
format.js { render rjs.replace_form_for(@<%= file_name %>) }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# DELETE /<%= table_name %>/1
|
87
|
+
# DELETE /<%= table_name %>/1.xml
|
88
|
+
# DELETE /<%= table_name %>/1.js
|
89
|
+
def destroy
|
90
|
+
@<%= file_name %> = <%= class_name %>.find(params[:id])
|
91
|
+
@<%= file_name %>.destroy
|
92
|
+
|
93
|
+
respond_to do |format|
|
94
|
+
format.html { redirect_to(<%= table_name %>_url) }
|
95
|
+
format.xml { head :ok }
|
96
|
+
format.js { render rjs.remove(@<%= file_name %>) }
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
|
7
|
+
<title><%= controller_class_name %>: <%%= controller.action_name %></title>
|
8
|
+
<%%= stylesheet_link_tag 'scaffold' %>
|
9
|
+
<%%= rightjs_scripts %>
|
10
|
+
</head>
|
11
|
+
<body>
|
12
|
+
|
13
|
+
<%%= flashes %>
|
14
|
+
|
15
|
+
<%%= yield %>
|
16
|
+
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
body { background-color: #fff; color: #333; }
|
2
|
+
|
3
|
+
body, p, ol, ul, td {
|
4
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
5
|
+
font-size: 13px;
|
6
|
+
line-height: 18px;
|
7
|
+
}
|
8
|
+
|
9
|
+
pre {
|
10
|
+
background-color: #eee;
|
11
|
+
padding: 10px;
|
12
|
+
font-size: 11px;
|
13
|
+
}
|
14
|
+
|
15
|
+
a { color: #000; }
|
16
|
+
a:visited { color: #666; }
|
17
|
+
a:hover { color: #fff; background-color:#000; }
|
18
|
+
|
19
|
+
.fieldWithErrors {
|
20
|
+
padding: 2px;
|
21
|
+
background-color: red;
|
22
|
+
display: table;
|
23
|
+
}
|
24
|
+
|
25
|
+
#errorExplanation {
|
26
|
+
width: 400px;
|
27
|
+
border: 2px solid red;
|
28
|
+
padding: 7px;
|
29
|
+
padding-bottom: 12px;
|
30
|
+
margin-bottom: 20px;
|
31
|
+
background-color: #f0f0f0;
|
32
|
+
}
|
33
|
+
|
34
|
+
#errorExplanation h2 {
|
35
|
+
text-align: left;
|
36
|
+
font-weight: bold;
|
37
|
+
padding: 5px 5px 5px 15px;
|
38
|
+
font-size: 12px;
|
39
|
+
margin: -7px;
|
40
|
+
background-color: #c00;
|
41
|
+
color: #fff;
|
42
|
+
}
|
43
|
+
|
44
|
+
#errorExplanation p {
|
45
|
+
color: #333;
|
46
|
+
margin-bottom: 0;
|
47
|
+
padding: 5px;
|
48
|
+
}
|
49
|
+
|
50
|
+
#errorExplanation ul li {
|
51
|
+
font-size: 12px;
|
52
|
+
list-style: square;
|
53
|
+
}
|
54
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%% form_for(@<%= singular_name %>) do |f| %>
|
2
|
+
<%%= f.error_messages %>
|
3
|
+
|
4
|
+
<% for attribute in attributes -%>
|
5
|
+
<p>
|
6
|
+
<%%= f.label :<%= attribute.name %> %><br />
|
7
|
+
<%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
|
8
|
+
</p>
|
9
|
+
<% end -%>
|
10
|
+
|
11
|
+
<p class="buttons">
|
12
|
+
<%%= f.submit f.object.new_record? ? 'Create' : 'Update' %>
|
13
|
+
<%%= link_to_function 'Cancel', "$(this).parent('form').remove();" if request.xhr? %>
|
14
|
+
<%%= image_tag 'spinner.gif', :style => 'display:none', :class => :spinner %>
|
15
|
+
</p>
|
16
|
+
<%% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%% div_for <%= singular_name %> do %>
|
2
|
+
<% for attribute in attributes -%>
|
3
|
+
<p>
|
4
|
+
<label><%= attribute.name %></label>: <%%=h <%= singular_name %>.<%= attribute.name %> %>
|
5
|
+
</p>
|
6
|
+
<% end -%>
|
7
|
+
|
8
|
+
<div class="actions">
|
9
|
+
<%%= link_to 'Show', <%= singular_name %> %> |
|
10
|
+
<%%= link_to 'Edit', edit_<%= singular_name %>_path(<%= singular_name %>), :class => :edit %> |
|
11
|
+
<%%= link_to 'Destroy', <%= singular_name %>, :confirm => 'Are you sure?', :method => :delete, :class => :destroy %>
|
12
|
+
</div>
|
13
|
+
<%% end -%>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% for attribute in attributes -%>
|
2
|
+
<p>
|
3
|
+
<b><%= attribute.column.human_name %>:</b>
|
4
|
+
<%%=h @<%= singular_name %>.<%= attribute.name %> %>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<% end -%>
|
8
|
+
|
9
|
+
<%%= link_to 'Edit', edit_<%= singular_name %>_path(@<%= singular_name %>) %> |
|
10
|
+
<%%= link_to 'Back', <%= plural_name %>_path %>
|
data/init.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Include hook code here
|
2
|
+
|
3
|
+
if defined?(ActionController)
|
4
|
+
class ActionController::Base
|
5
|
+
include RightRails::ControllerExtensions
|
6
|
+
|
7
|
+
helper RightRails::Helpers::Basic,
|
8
|
+
RightRails::Helpers::Rails,
|
9
|
+
RightRails::Helpers::Forms,
|
10
|
+
RightRails::Helpers::Misc
|
11
|
+
end
|
12
|
+
end
|