zen_seo 0.0.1 → 0.0.2
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/.gitignore +12 -0
- data/.gitignore~ +7 -0
- data/.rspec +2 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +115 -0
- data/README.md +88 -0
- data/lib/zen_seo/base.rb +5 -4
- data/lib/zen_seo/controller_helper.rb +1 -0
- data/lib/zen_seo/version.rb +1 -1
- data/{test → spec}/dummy/README.rdoc +0 -0
- data/{test → spec}/dummy/Rakefile +0 -0
- data/{test → spec}/dummy/app/assets/javascripts/application.js +0 -0
- data/spec/dummy/app/assets/javascripts/posts.js +2 -0
- data/{test → spec}/dummy/app/assets/stylesheets/application.css +0 -0
- data/spec/dummy/app/assets/stylesheets/posts.css +4 -0
- data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
- data/{test → spec}/dummy/app/controllers/application_controller.rb +0 -0
- data/spec/dummy/app/controllers/posts_controller.rb +83 -0
- data/{test → spec}/dummy/app/helpers/application_helper.rb +0 -0
- data/spec/dummy/app/helpers/posts_helper.rb +2 -0
- data/{test/dummy/public/favicon.ico → spec/dummy/app/mailers/.gitkeep} +0 -0
- data/spec/dummy/app/models/.gitkeep +0 -0
- data/spec/dummy/app/models/post.rb +8 -0
- data/{test → spec}/dummy/app/views/layouts/application.html.erb +1 -0
- data/spec/dummy/app/views/posts/_form.html.erb +43 -0
- data/spec/dummy/app/views/posts/edit.html.erb +6 -0
- data/spec/dummy/app/views/posts/index.html.erb +27 -0
- data/spec/dummy/app/views/posts/new.html.erb +5 -0
- data/spec/dummy/app/views/posts/show.html.erb +20 -0
- data/{test → spec}/dummy/config/application.rb +0 -0
- data/{test → spec}/dummy/config/boot.rb +0 -0
- data/{test → spec}/dummy/config/database.yml +0 -0
- data/{test → spec}/dummy/config/environment.rb +0 -0
- data/{test → spec}/dummy/config/environments/development.rb +0 -0
- data/{test → spec}/dummy/config/environments/production.rb +0 -0
- data/{test → spec}/dummy/config/environments/test.rb +0 -0
- data/{test → spec}/dummy/config/initializers/backtrace_silencers.rb +0 -0
- data/{test → spec}/dummy/config/initializers/inflections.rb +0 -0
- data/{test → spec}/dummy/config/initializers/mime_types.rb +0 -0
- data/{test → spec}/dummy/config/initializers/secret_token.rb +0 -0
- data/{test → spec}/dummy/config/initializers/session_store.rb +0 -0
- data/{test → spec}/dummy/config/initializers/wrap_parameters.rb +0 -0
- data/{test → spec}/dummy/config/locales/en.yml +0 -0
- data/{test → spec}/dummy/config/routes.rb +4 -0
- data/{test → spec}/dummy/config.ru +0 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20130329073248_create_posts.rb +11 -0
- data/spec/dummy/db/migrate/20130329073304_create_seos.rb +12 -0
- data/spec/dummy/db/schema.rb +34 -0
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/log/development.log +711 -0
- data/{test → spec}/dummy/public/404.html +0 -0
- data/{test → spec}/dummy/public/422.html +0 -0
- data/{test → spec}/dummy/public/500.html +0 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/{test → spec}/dummy/script/rails +0 -0
- data/spec/dummy/test/fixtures/posts.yml +11 -0
- data/spec/dummy/test/functional/posts_controller_test.rb +49 -0
- data/spec/dummy/test/unit/helpers/posts_helper_test.rb +4 -0
- data/spec/dummy/test/unit/post_test.rb +7 -0
- data/spec/dummy/tmp/cache/assets/C8C/B80/sprockets%2F371bf96e99717688ed7313a0c53f4212 +0 -0
- data/spec/dummy/tmp/cache/assets/CAB/2B0/sprockets%2F7f42b56265da60e2e55070da5209187e +0 -0
- data/spec/dummy/tmp/cache/assets/CC7/220/sprockets%2Fd066c004d1fd26ae76a61303a7a18145 +0 -0
- data/spec/dummy/tmp/cache/assets/CD5/B70/sprockets%2F416150dc3ac35079c94273cc46e90aa6 +0 -0
- data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +0 -0
- data/spec/dummy/tmp/cache/assets/D1A/310/sprockets%2F5384ad85f52d3272dbc64d46ef3876a4 +0 -0
- data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/D4C/0A0/sprockets%2F128b787007ed7bcc496f2cfe954054df +0 -0
- data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/D9C/CD0/sprockets%2Fc85016e7bbd4f3adbb7635d01f85d39b +0 -0
- data/spec/dummy/tmp/cache/assets/DA0/4D0/sprockets%2F621e6ac32f63ecb1fcd158c408cd877f +0 -0
- data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/E1C/CF0/sprockets%2Fa1bfe0c8cb9c6a2d3b00a914dcdfb494 +0 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/zen_seo_spec.rb +43 -0
- data/zen_seo.gemspec +30 -0
- data/zen_seo.gemspec~ +28 -0
- metadata +155 -71
- data/test/test_helper.rb +0 -15
- data/test/zen_seo_test.rb +0 -7
data/.gitignore
ADDED
data/.gitignore~
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
source "http://rubygems.org"
|
|
2
|
+
|
|
3
|
+
# Declare your gem's dependencies in zen_seo.gemspec.
|
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
|
5
|
+
# development dependencies will be added by default to the :development group.
|
|
6
|
+
gemspec
|
|
7
|
+
|
|
8
|
+
# jquery-rails is used by the dummy application
|
|
9
|
+
gem "jquery-rails"
|
|
10
|
+
gem 'sqlite3'
|
|
11
|
+
gem 'meta-tags', :require=>'meta_tags'
|
|
12
|
+
gem 'quiet_assets'
|
|
13
|
+
|
|
14
|
+
gem 'rspec'
|
|
15
|
+
|
|
16
|
+
# Declare any dependencies that are still in development here instead of in
|
|
17
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
|
18
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
|
19
|
+
# your gem to rubygems.org.
|
|
20
|
+
|
|
21
|
+
# To use debugger
|
|
22
|
+
# gem 'debugger'
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
zen_seo (0.0.2)
|
|
5
|
+
meta-tags
|
|
6
|
+
rails (~> 3.2.13)
|
|
7
|
+
|
|
8
|
+
GEM
|
|
9
|
+
remote: http://rubygems.org/
|
|
10
|
+
specs:
|
|
11
|
+
actionmailer (3.2.13)
|
|
12
|
+
actionpack (= 3.2.13)
|
|
13
|
+
mail (~> 2.5.3)
|
|
14
|
+
actionpack (3.2.13)
|
|
15
|
+
activemodel (= 3.2.13)
|
|
16
|
+
activesupport (= 3.2.13)
|
|
17
|
+
builder (~> 3.0.0)
|
|
18
|
+
erubis (~> 2.7.0)
|
|
19
|
+
journey (~> 1.0.4)
|
|
20
|
+
rack (~> 1.4.5)
|
|
21
|
+
rack-cache (~> 1.2)
|
|
22
|
+
rack-test (~> 0.6.1)
|
|
23
|
+
sprockets (~> 2.2.1)
|
|
24
|
+
activemodel (3.2.13)
|
|
25
|
+
activesupport (= 3.2.13)
|
|
26
|
+
builder (~> 3.0.0)
|
|
27
|
+
activerecord (3.2.13)
|
|
28
|
+
activemodel (= 3.2.13)
|
|
29
|
+
activesupport (= 3.2.13)
|
|
30
|
+
arel (~> 3.0.2)
|
|
31
|
+
tzinfo (~> 0.3.29)
|
|
32
|
+
activeresource (3.2.13)
|
|
33
|
+
activemodel (= 3.2.13)
|
|
34
|
+
activesupport (= 3.2.13)
|
|
35
|
+
activesupport (3.2.13)
|
|
36
|
+
i18n (= 0.6.1)
|
|
37
|
+
multi_json (~> 1.0)
|
|
38
|
+
arel (3.0.2)
|
|
39
|
+
builder (3.0.4)
|
|
40
|
+
diff-lcs (1.2.1)
|
|
41
|
+
erubis (2.7.0)
|
|
42
|
+
hike (1.2.1)
|
|
43
|
+
i18n (0.6.1)
|
|
44
|
+
journey (1.0.4)
|
|
45
|
+
jquery-rails (2.2.1)
|
|
46
|
+
railties (>= 3.0, < 5.0)
|
|
47
|
+
thor (>= 0.14, < 2.0)
|
|
48
|
+
json (1.7.7)
|
|
49
|
+
mail (2.5.3)
|
|
50
|
+
i18n (>= 0.4.0)
|
|
51
|
+
mime-types (~> 1.16)
|
|
52
|
+
treetop (~> 1.4.8)
|
|
53
|
+
meta-tags (1.4.1)
|
|
54
|
+
actionpack
|
|
55
|
+
mime-types (1.21)
|
|
56
|
+
multi_json (1.7.2)
|
|
57
|
+
polyglot (0.3.3)
|
|
58
|
+
quiet_assets (1.0.2)
|
|
59
|
+
railties (>= 3.1, < 5.0)
|
|
60
|
+
rack (1.4.5)
|
|
61
|
+
rack-cache (1.2)
|
|
62
|
+
rack (>= 0.4)
|
|
63
|
+
rack-ssl (1.3.3)
|
|
64
|
+
rack
|
|
65
|
+
rack-test (0.6.2)
|
|
66
|
+
rack (>= 1.0)
|
|
67
|
+
rails (3.2.13)
|
|
68
|
+
actionmailer (= 3.2.13)
|
|
69
|
+
actionpack (= 3.2.13)
|
|
70
|
+
activerecord (= 3.2.13)
|
|
71
|
+
activeresource (= 3.2.13)
|
|
72
|
+
activesupport (= 3.2.13)
|
|
73
|
+
bundler (~> 1.0)
|
|
74
|
+
railties (= 3.2.13)
|
|
75
|
+
railties (3.2.13)
|
|
76
|
+
actionpack (= 3.2.13)
|
|
77
|
+
activesupport (= 3.2.13)
|
|
78
|
+
rack-ssl (~> 1.3.2)
|
|
79
|
+
rake (>= 0.8.7)
|
|
80
|
+
rdoc (~> 3.4)
|
|
81
|
+
thor (>= 0.14.6, < 2.0)
|
|
82
|
+
rake (10.0.4)
|
|
83
|
+
rdoc (3.12.2)
|
|
84
|
+
json (~> 1.4)
|
|
85
|
+
rspec (2.13.0)
|
|
86
|
+
rspec-core (~> 2.13.0)
|
|
87
|
+
rspec-expectations (~> 2.13.0)
|
|
88
|
+
rspec-mocks (~> 2.13.0)
|
|
89
|
+
rspec-core (2.13.1)
|
|
90
|
+
rspec-expectations (2.13.0)
|
|
91
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
|
92
|
+
rspec-mocks (2.13.0)
|
|
93
|
+
sprockets (2.2.2)
|
|
94
|
+
hike (~> 1.2)
|
|
95
|
+
multi_json (~> 1.0)
|
|
96
|
+
rack (~> 1.0)
|
|
97
|
+
tilt (~> 1.1, != 1.3.0)
|
|
98
|
+
sqlite3 (1.3.7)
|
|
99
|
+
thor (0.18.0)
|
|
100
|
+
tilt (1.3.6)
|
|
101
|
+
treetop (1.4.12)
|
|
102
|
+
polyglot
|
|
103
|
+
polyglot (>= 0.3.1)
|
|
104
|
+
tzinfo (0.3.37)
|
|
105
|
+
|
|
106
|
+
PLATFORMS
|
|
107
|
+
ruby
|
|
108
|
+
|
|
109
|
+
DEPENDENCIES
|
|
110
|
+
jquery-rails
|
|
111
|
+
meta-tags
|
|
112
|
+
quiet_assets
|
|
113
|
+
rspec
|
|
114
|
+
sqlite3
|
|
115
|
+
zen_seo!
|
data/README.md
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#ZEN_SEO is a clean way of managing your meta tags for resources
|
|
2
|
+
## Install
|
|
3
|
+
Hope all of us are at least on Rails3 and moving to upcoming Rails4(unsupported for now)
|
|
4
|
+
```sh
|
|
5
|
+
# Gemfile
|
|
6
|
+
gem 'zen_seo'
|
|
7
|
+
```
|
|
8
|
+
Then run the install generator, that will create migration(MongoDB is on the routemap) for the SEO model.
|
|
9
|
+
```sh
|
|
10
|
+
rails generate zen_seo:install
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
Pick up a resource to grant a promotable behavior
|
|
15
|
+
### Model
|
|
16
|
+
|
|
17
|
+
```ruby
|
|
18
|
+
#app/models/post.rb
|
|
19
|
+
has_seo
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
This will try to call `title`, `description`, `keywords` on your model to fill in seo fields, optionally you can supply a hash, that redefines the methods to be called
|
|
23
|
+
|
|
24
|
+
```ruby
|
|
25
|
+
#app/models/post.rb
|
|
26
|
+
class Post < ActiveRecord::Base
|
|
27
|
+
attr_accessible :body, :tags, :title
|
|
28
|
+
has_seo :description=>:body, :keywords=>:make_keywords
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
def make_keywords
|
|
32
|
+
self.tags.gsub(/:/, ', ')
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
###Controller
|
|
38
|
+
|
|
39
|
+
ZEN_SEO heavily based on [meta_tags](https://github.com/kpumuk/meta-tags) gem, so set it up as normal.
|
|
40
|
+
|
|
41
|
+
When your layout contains
|
|
42
|
+
```ruby
|
|
43
|
+
#application.html.erb
|
|
44
|
+
<head>
|
|
45
|
+
<%= display_meta_tags default_meta_tags %>
|
|
46
|
+
</head>
|
|
47
|
+
```
|
|
48
|
+
now in controller you can use `meta_tags_for` helper
|
|
49
|
+
```ruby
|
|
50
|
+
#posts_controller.rb
|
|
51
|
+
# GET /posts/1
|
|
52
|
+
# GET /posts/1.json
|
|
53
|
+
def show
|
|
54
|
+
@post = Post.find(params[:id])
|
|
55
|
+
meta_tags_for @post
|
|
56
|
+
respond_to do |format|
|
|
57
|
+
format.html # show.html.erb
|
|
58
|
+
format.json { render json: @post }
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
```
|
|
62
|
+
###Form
|
|
63
|
+
To set meta tags for your resource just put `fields_for :seo` in your form. Like this:
|
|
64
|
+
```erb
|
|
65
|
+
<h3>Make yout post seo-friendly</h3>
|
|
66
|
+
<%= f.fields_for :seo do |seo| %>
|
|
67
|
+
<div class="field">
|
|
68
|
+
<%= seo.label :title %><br />
|
|
69
|
+
<%= seo.text_field :title %>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="field">
|
|
72
|
+
<%= seo.label :keywords %><br />
|
|
73
|
+
<%= seo.text_field :keywords %>
|
|
74
|
+
</div>
|
|
75
|
+
<div class="field">
|
|
76
|
+
<%= seo.label :description %><br />
|
|
77
|
+
<%= seo.text_area :description %>
|
|
78
|
+
</div>
|
|
79
|
+
<% end %>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Note on Patches/Pull Requests
|
|
83
|
+
|
|
84
|
+
* Any help on issues-fighting(or finding) and testing is highly appreciated
|
|
85
|
+
|
|
86
|
+
## Copyright
|
|
87
|
+
|
|
88
|
+
Sergey Prikhodko originally developed by Jared Pace Copyright (c) 2010. See LICENSE for details.
|
data/lib/zen_seo/base.rb
CHANGED
|
@@ -6,7 +6,8 @@ module ZenSeo
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def has_seo_config(options={})
|
|
9
|
-
|
|
9
|
+
defaults={title: :title, description: :description, keywords: :keywords}
|
|
10
|
+
@has_seo_config ||= defaults.merge options
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
end
|
|
@@ -36,9 +37,9 @@ module ZenSeo
|
|
|
36
37
|
end
|
|
37
38
|
|
|
38
39
|
def generate_seo_fields
|
|
39
|
-
seo.title
|
|
40
|
-
seo.description
|
|
41
|
-
seo.keywords
|
|
40
|
+
seo.title= self.send (has_seo_config[:title]) if seo.title.blank?
|
|
41
|
+
seo.description= self.send (has_seo_config[:description]) if seo.description.blank?
|
|
42
|
+
seo.keywords= self.send (has_seo_config[:keywords]) if seo.keywords.blank?
|
|
42
43
|
end
|
|
43
44
|
|
|
44
45
|
end
|
data/lib/zen_seo/version.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
div.field, div.actions {
|
|
20
|
+
margin-bottom: 10px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#notice {
|
|
24
|
+
color: green;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.field_with_errors {
|
|
28
|
+
padding: 2px;
|
|
29
|
+
background-color: red;
|
|
30
|
+
display: table;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
#error_explanation {
|
|
34
|
+
width: 450px;
|
|
35
|
+
border: 2px solid red;
|
|
36
|
+
padding: 7px;
|
|
37
|
+
padding-bottom: 0;
|
|
38
|
+
margin-bottom: 20px;
|
|
39
|
+
background-color: #f0f0f0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
#error_explanation h2 {
|
|
43
|
+
text-align: left;
|
|
44
|
+
font-weight: bold;
|
|
45
|
+
padding: 5px 5px 5px 15px;
|
|
46
|
+
font-size: 12px;
|
|
47
|
+
margin: -7px;
|
|
48
|
+
margin-bottom: 0px;
|
|
49
|
+
background-color: #c00;
|
|
50
|
+
color: #fff;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
#error_explanation ul li {
|
|
54
|
+
font-size: 12px;
|
|
55
|
+
list-style: square;
|
|
56
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
class PostsController < ApplicationController
|
|
2
|
+
# GET /posts
|
|
3
|
+
# GET /posts.json
|
|
4
|
+
def index
|
|
5
|
+
@posts = Post.all
|
|
6
|
+
|
|
7
|
+
respond_to do |format|
|
|
8
|
+
format.html # index.html.erb
|
|
9
|
+
format.json { render json: @posts }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# GET /posts/1
|
|
14
|
+
# GET /posts/1.json
|
|
15
|
+
def show
|
|
16
|
+
@post = Post.find(params[:id])
|
|
17
|
+
meta_tags_for @post
|
|
18
|
+
respond_to do |format|
|
|
19
|
+
format.html # show.html.erb
|
|
20
|
+
format.json { render json: @post }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# GET /posts/new
|
|
25
|
+
# GET /posts/new.json
|
|
26
|
+
def new
|
|
27
|
+
@post = Post.new
|
|
28
|
+
|
|
29
|
+
respond_to do |format|
|
|
30
|
+
format.html # new.html.erb
|
|
31
|
+
format.json { render json: @post }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# GET /posts/1/edit
|
|
36
|
+
def edit
|
|
37
|
+
@post = Post.find(params[:id])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# POST /posts
|
|
41
|
+
# POST /posts.json
|
|
42
|
+
def create
|
|
43
|
+
@post = Post.new(params[:post])
|
|
44
|
+
|
|
45
|
+
respond_to do |format|
|
|
46
|
+
if @post.save
|
|
47
|
+
format.html { redirect_to @post, notice: 'Post was successfully created.' }
|
|
48
|
+
format.json { render json: @post, status: :created, location: @post }
|
|
49
|
+
else
|
|
50
|
+
format.html { render action: "new" }
|
|
51
|
+
format.json { render json: @post.errors, status: :unprocessable_entity }
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# PUT /posts/1
|
|
57
|
+
# PUT /posts/1.json
|
|
58
|
+
def update
|
|
59
|
+
@post = Post.find(params[:id])
|
|
60
|
+
|
|
61
|
+
respond_to do |format|
|
|
62
|
+
if @post.update_attributes(params[:post])
|
|
63
|
+
format.html { redirect_to @post, notice: 'Post was successfully updated.' }
|
|
64
|
+
format.json { head :no_content }
|
|
65
|
+
else
|
|
66
|
+
format.html { render action: "edit" }
|
|
67
|
+
format.json { render json: @post.errors, status: :unprocessable_entity }
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# DELETE /posts/1
|
|
73
|
+
# DELETE /posts/1.json
|
|
74
|
+
def destroy
|
|
75
|
+
@post = Post.find(params[:id])
|
|
76
|
+
@post.destroy
|
|
77
|
+
|
|
78
|
+
respond_to do |format|
|
|
79
|
+
format.html { redirect_to posts_url }
|
|
80
|
+
format.json { head :no_content }
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<%= form_for(@post) do |f| %>
|
|
2
|
+
<% if @post.errors.any? %>
|
|
3
|
+
<div id="error_explanation">
|
|
4
|
+
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
|
|
5
|
+
|
|
6
|
+
<ul>
|
|
7
|
+
<% @post.errors.full_messages.each do |msg| %>
|
|
8
|
+
<li><%= msg %></li>
|
|
9
|
+
<% end %>
|
|
10
|
+
</ul>
|
|
11
|
+
</div>
|
|
12
|
+
<% end %>
|
|
13
|
+
<div class="field">
|
|
14
|
+
<%= f.label :title %><br />
|
|
15
|
+
<%= f.text_field :title %>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<%= f.label :body %><br />
|
|
19
|
+
<%= f.text_area :body %>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<%= f.label :tags %><br />
|
|
23
|
+
<%= f.text_area :tags %>
|
|
24
|
+
</div>
|
|
25
|
+
<h3>Make yout post seo-friendly</h3>
|
|
26
|
+
<%= f.fields_for :seo do |seo| %>
|
|
27
|
+
<div class="field">
|
|
28
|
+
<%= seo.label :title %><br />
|
|
29
|
+
<%= seo.text_field :title %>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="field">
|
|
32
|
+
<%= seo.label :keywords %><br />
|
|
33
|
+
<%= seo.text_field :keywords %>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="field">
|
|
36
|
+
<%= seo.label :description %><br />
|
|
37
|
+
<%= seo.text_area :description %>
|
|
38
|
+
</div>
|
|
39
|
+
<% end %>
|
|
40
|
+
<div class="actions">
|
|
41
|
+
<%= f.submit %>
|
|
42
|
+
</div>
|
|
43
|
+
<% end %>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<h1>Listing posts</h1>
|
|
2
|
+
|
|
3
|
+
<table>
|
|
4
|
+
<tr>
|
|
5
|
+
<th>Title</th>
|
|
6
|
+
<th>Body</th>
|
|
7
|
+
<th>Tags</th>
|
|
8
|
+
<th></th>
|
|
9
|
+
<th></th>
|
|
10
|
+
<th></th>
|
|
11
|
+
</tr>
|
|
12
|
+
|
|
13
|
+
<% @posts.each do |post| %>
|
|
14
|
+
<tr>
|
|
15
|
+
<td><%= post.title %></td>
|
|
16
|
+
<td><%= post.body %></td>
|
|
17
|
+
<td><%= post.tags %></td>
|
|
18
|
+
<td><%= link_to 'Show', post %></td>
|
|
19
|
+
<td><%= link_to 'Edit', edit_post_path(post) %></td>
|
|
20
|
+
<td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
|
21
|
+
</tr>
|
|
22
|
+
<% end %>
|
|
23
|
+
</table>
|
|
24
|
+
|
|
25
|
+
<br />
|
|
26
|
+
|
|
27
|
+
<%= link_to 'New Post', new_post_path %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<p id="notice"><%= notice %></p>
|
|
2
|
+
|
|
3
|
+
<p>
|
|
4
|
+
<b>Title:</b>
|
|
5
|
+
<%= @post.title %>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<p>
|
|
9
|
+
<b>Body:</b>
|
|
10
|
+
<%= @post.body %>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p>
|
|
14
|
+
<b>Tags:</b>
|
|
15
|
+
<%= @post.tags %>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
<%= link_to 'Edit', edit_post_path(@post) %> |
|
|
20
|
+
<%= link_to 'Back', posts_path %>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
Binary file
|