validation_sync 0.0.4 → 0.0.5
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/generate_validations.js.erb +138 -0
- data/app/assets/javascripts/validation_sync.js +2 -1
- data/app/helpers/validation_sync_form_helper.rb +12 -71
- data/lib/validation_sync/engine.rb +2 -0
- data/lib/validation_sync/validation_builder.rb +139 -0
- data/lib/validation_sync/version.rb +1 -1
- data/lib/validation_sync.rb +1 -0
- data/spec/dummy/app/controllers/posts_controller.rb +1 -1
- data/spec/dummy/app/controllers/users_controller.rb +58 -0
- data/spec/dummy/app/models/post.rb +15 -4
- data/spec/dummy/app/models/user.rb +11 -0
- data/spec/dummy/app/views/posts/_form.html.erb +8 -0
- data/spec/dummy/app/views/posts/show.html.erb +5 -0
- data/spec/dummy/app/views/users/_form.html.erb +33 -0
- data/spec/dummy/app/views/users/edit.html.erb +6 -0
- data/spec/dummy/app/views/users/index.html.erb +29 -0
- data/spec/dummy/app/views/users/new.html.erb +5 -0
- data/spec/dummy/app/views/users/show.html.erb +14 -0
- data/spec/dummy/config/application.rb +1 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20140211200846_create_users.rb +10 -0
- data/spec/dummy/db/migrate/20140212170448_add_order_to_posts.rb +5 -0
- data/spec/dummy/db/migrate/20140212173012_add_user_id_to_posts.rb +5 -0
- data/spec/dummy/db/schema.rb +10 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +7256 -0
- data/spec/dummy/log/test.log +6037 -0
- data/spec/dummy/spec/factories/posts.rb +26 -0
- data/spec/dummy/spec/factories/users.rb +14 -0
- data/spec/dummy/spec/models/post_spec.rb +98 -0
- data/spec/dummy/spec/models/user_spec.rb +27 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/10c6f05e183df4466be1e0171868fbd3 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/254f7fcb30f60607963da8bbb320eb25 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/256916ba749d0c14e36b55d4b382e9f5 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/38ec44893aed52b20a20a929a47e0ad9 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/4a4d6fda449d6b443e5b29ccb755c732 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/513dd40b9b52367f54d64438a9d802b9 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/56146675dbad13c72d3eb9ebd823dc11 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/7aaf7da4e6ec4c84cc7948fb20c35064 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/ba165ee56ce37f61865fe03d6503539b +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/bfaeb96080cc4d8ba400fbdcd1d4aab2 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c4f1b332263aa5004a8ac54ca9530510 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c63406c52c03bbb24922ded6ebb0e0a2 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cbc66bd36b3aa4411f9ce20da0fd37a0 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d7874cf8a5946ec3899e5bb627905ca5 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/e1d4998592ddfea795aca82d742d9478 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/0f11e0b3e0ece93d6c047318f2e5497d +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/10c6f05e183df4466be1e0171868fbd3 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/122e92d06837af295d6c941999a8d48f +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/254f7fcb30f60607963da8bbb320eb25 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/256916ba749d0c14e36b55d4b382e9f5 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/4a4d6fda449d6b443e5b29ccb755c732 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/56146675dbad13c72d3eb9ebd823dc11 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/bfaeb96080cc4d8ba400fbdcd1d4aab2 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/c4f1b332263aa5004a8ac54ca9530510 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d7874cf8a5946ec3899e5bb627905ca5 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/e1d4998592ddfea795aca82d742d9478 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/capybara/capybara-201402111733312899331645.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402111742049902988712.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402111743461497527818.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402121034216891460553.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402121100145511229652.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-20140212110749239625833.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402121110009350488348.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402121242315707153414.html +54 -0
- data/spec/dummy/tmp/capybara/capybara-2014021212463939561980.html +47 -0
- data/spec/dummy/tmp/capybara/capybara-201402121308362867044001.html +47 -0
- data/spec/dummy/tmp/capybara/capybara-201402121309286432044699.html +47 -0
- data/spec/dummy/tmp/capybara/capybara-201402121506235794052148.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402121507316558835315.html +27 -0
- data/spec/dummy/tmp/capybara/capybara-201402121512202956445364.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402121517176338336364.html +39 -0
- data/spec/dummy/tmp/capybara/capybara-201402121518121290133083.html +39 -0
- data/spec/dummy/tmp/pids/server.pid +1 -0
- data/spec/features/form_interactions_spec.rb +153 -0
- data/spec/features/generate_validations_spec.rb +26 -0
- data/spec/helpers/validation_sync_form_helper_spec.rb +24 -0
- data/spec/lib/validation_builder_spec.rb +173 -0
- data/spec/spec_helper.rb +7 -1
- metadata +120 -11
- data/app/assets/javascripts/validations.js.coffee.erb +0 -51
- data/spec/dummy/app/assets/javascripts/posts.js +0 -2
- data/spec/dummy/app/assets/stylesheets/posts.css +0 -4
- data/spec/features/form_validation_spec.rb +0 -53
- data/spec/helpers/form_helper_spec.rb +0 -4
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
|
|
3
|
+
factory :post do
|
|
4
|
+
|
|
5
|
+
sequence :title do
|
|
6
|
+
titles = [
|
|
7
|
+
"Take out the garbage",
|
|
8
|
+
"Do the dishes",
|
|
9
|
+
"Empty the Litter box",
|
|
10
|
+
"Clean the shower",
|
|
11
|
+
"Scrub the toilet",
|
|
12
|
+
"Dust the tv",
|
|
13
|
+
"Feed the dog"
|
|
14
|
+
]
|
|
15
|
+
titles.sample
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
content "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
|
|
19
|
+
author_email "jason.bourne@example.com"
|
|
20
|
+
view_count 0
|
|
21
|
+
order 1
|
|
22
|
+
user_id 1
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Post do
|
|
4
|
+
|
|
5
|
+
it "creates a valid record" do
|
|
6
|
+
post = build(:post)
|
|
7
|
+
post.should be_valid
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "validations" do
|
|
11
|
+
|
|
12
|
+
describe "title" do
|
|
13
|
+
it "requires a title" do
|
|
14
|
+
post = build(:post, title: "")
|
|
15
|
+
post.should_not be_valid
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "has a custom validation message for 'title'" do
|
|
19
|
+
post = build(:post, title: "")
|
|
20
|
+
post.valid?
|
|
21
|
+
expect(post.errors.messages[:title]).to include('You need a title, bro.')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "has a min title length of 5" do
|
|
25
|
+
# 4 characters
|
|
26
|
+
post = build(:post, title: "1234")
|
|
27
|
+
post.should_not be_valid
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe "content" do
|
|
32
|
+
it "requires content" do
|
|
33
|
+
post = build(:post, content: "")
|
|
34
|
+
post.should_not be_valid
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "has a max content length of 140" do
|
|
38
|
+
# 141 characters
|
|
39
|
+
post = build(:post, content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc iaculis tincidunt condimentum. Suspendisse interdum posuere tortor vitae amete.")
|
|
40
|
+
post.should_not be_valid
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "create's a valid record, if the content is 140 characters or less" do
|
|
44
|
+
# 140 characters
|
|
45
|
+
post = build(:post, content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc iaculis tincidunt condimentum. Suspendisse interdum posuere tortor vitae amete")
|
|
46
|
+
post.should be_valid
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "view_count" do
|
|
51
|
+
it "requires a view count" do
|
|
52
|
+
post = build(:post, view_count: nil)
|
|
53
|
+
post.should_not be_valid
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "can't have letters in its view_count" do
|
|
57
|
+
post = build(:post, view_count: "123a")
|
|
58
|
+
post.should_not be_valid
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "can't have punctuation in its view_count" do
|
|
62
|
+
post = build(:post, view_count: "123,")
|
|
63
|
+
post.should_not be_valid
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe "order" do
|
|
68
|
+
it "can't have letters in its order" do
|
|
69
|
+
post = build(:post, order: "123a")
|
|
70
|
+
post.should_not be_valid
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "can't have punctuation in its order" do
|
|
74
|
+
post = build(:post, order: "123,")
|
|
75
|
+
post.should_not be_valid
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe "user_id" do
|
|
80
|
+
|
|
81
|
+
it "requires a user_id" do
|
|
82
|
+
post = build(:post, user_id: "")
|
|
83
|
+
post.should_not be_valid
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "can't have letters in its user_id" do
|
|
87
|
+
post = build(:post, user_id: "123a")
|
|
88
|
+
post.should_not be_valid
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "can't have punctuation in its user_id" do
|
|
92
|
+
post = build(:post, user_id: "123,")
|
|
93
|
+
post.should_not be_valid
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe User do
|
|
4
|
+
|
|
5
|
+
it "creates a valid record" do
|
|
6
|
+
user = build(:user)
|
|
7
|
+
user.should be_valid
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
describe "validations" do
|
|
12
|
+
|
|
13
|
+
it "requires an email confirmation" do
|
|
14
|
+
user = build(:user)
|
|
15
|
+
user.email_confirmation = "different.email@example.com"
|
|
16
|
+
expect(user).not_to be_valid
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "requires a password confirmation" do
|
|
20
|
+
user = build(:user)
|
|
21
|
+
user.password_confirmation = "different_Password"
|
|
22
|
+
expect(user).not_to be_valid
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<label for="post_title">Title</label><br>
|
|
15
|
+
<input id="post_title" name="post[title]" type="text">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<label for="post_content">Content</label><br>
|
|
19
|
+
<textarea id="post_content" name="post[content]"></textarea>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<label for="post_view_count">View count</label><br>
|
|
23
|
+
<input id="post_view_count" name="post[view_count]" type="text">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="field">
|
|
26
|
+
<label for="post_author_email">Author email</label><br>
|
|
27
|
+
<input id="post_author_email" name="post[author_email]" type="text">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="actions">
|
|
30
|
+
<input name="commit" type="submit" value="Create Post">
|
|
31
|
+
</div>
|
|
32
|
+
</form>
|
|
33
|
+
|
|
34
|
+
<a href="/posts">Back</a>
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
</body></html>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<label for="post_title">Title</label><br>
|
|
15
|
+
<input id="post_title" name="post[title]" type="text">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<label for="post_content">Content</label><br>
|
|
19
|
+
<textarea id="post_content" name="post[content]"></textarea>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<label for="post_view_count">View count</label><br>
|
|
23
|
+
<input id="post_view_count" name="post[view_count]" type="text">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="field">
|
|
26
|
+
<label for="post_author_email">Author email</label><br>
|
|
27
|
+
<input id="post_author_email" name="post[author_email]" type="text">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="actions">
|
|
30
|
+
<input name="commit" type="submit" value="Create Post">
|
|
31
|
+
</div>
|
|
32
|
+
</form>
|
|
33
|
+
|
|
34
|
+
<a href="/posts">Back</a>
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
</body></html>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<label for="post_title">Title</label><br>
|
|
15
|
+
<input id="post_title" name="post[title]" type="text">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<label for="post_content">Content</label><br>
|
|
19
|
+
<textarea id="post_content" name="post[content]"></textarea>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<label for="post_view_count">View count</label><br>
|
|
23
|
+
<input id="post_view_count" name="post[view_count]" type="text">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="field">
|
|
26
|
+
<label for="post_author_email">Author email</label><br>
|
|
27
|
+
<input id="post_author_email" name="post[author_email]" type="text">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="actions">
|
|
30
|
+
<input name="commit" type="submit" value="Create Post">
|
|
31
|
+
</div>
|
|
32
|
+
</form>
|
|
33
|
+
|
|
34
|
+
<a href="/posts">Back</a>
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
</body></html>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<label for="post_title">Title</label><br>
|
|
15
|
+
<input id="post_title" name="post[title]" type="text">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<label for="post_content">Content</label><br>
|
|
19
|
+
<textarea id="post_content" name="post[content]"></textarea>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<label for="post_view_count">View count</label><br>
|
|
23
|
+
<input id="post_view_count" name="post[view_count]" type="text">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="field">
|
|
26
|
+
<label for="post_author_email">Author email</label><br>
|
|
27
|
+
<input id="post_author_email" name="post[author_email]" type="text">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="actions">
|
|
30
|
+
<input name="commit" type="submit" value="Create Post">
|
|
31
|
+
</div>
|
|
32
|
+
</form>
|
|
33
|
+
|
|
34
|
+
<a href="/posts">Back</a>
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
</body></html>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<label for="post_title">Title</label><br>
|
|
15
|
+
<input id="post_title" name="post[title]" type="text">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<label for="post_content">Content</label><br>
|
|
19
|
+
<textarea id="post_content" name="post[content]"></textarea>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<label for="post_view_count">View count</label><br>
|
|
23
|
+
<input id="post_view_count" name="post[view_count]" type="text">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="field">
|
|
26
|
+
<label for="post_author_email">Author email</label><br>
|
|
27
|
+
<input id="post_author_email" name="post[author_email]" type="text">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="actions">
|
|
30
|
+
<input name="commit" type="submit" value="Create Post">
|
|
31
|
+
</div>
|
|
32
|
+
</form>
|
|
33
|
+
|
|
34
|
+
<a href="/posts">Back</a>
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
</body></html>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<label for="post_title">Title</label><br>
|
|
15
|
+
<input id="post_title" name="post[title]" type="text" class="valid">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<label for="post_content">Content</label><br>
|
|
19
|
+
<textarea id="post_content" name="post[content]" class="error"></textarea><label for="post_content" class="error"></label>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<label for="post_view_count">View count</label><br>
|
|
23
|
+
<input id="post_view_count" name="post[view_count]" type="text" class="error"><label for="post_view_count" class="error"></label>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="field">
|
|
26
|
+
<label for="post_author_email">Author email</label><br>
|
|
27
|
+
<input id="post_author_email" name="post[author_email]" type="text">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="actions">
|
|
30
|
+
<input name="commit" type="submit" value="Create Post">
|
|
31
|
+
</div>
|
|
32
|
+
</form>
|
|
33
|
+
|
|
34
|
+
<a href="/posts">Back</a>
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
</body></html>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<label for="post_title">Title</label><br>
|
|
15
|
+
<input id="post_title" name="post[title]" type="text" class="valid">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<label for="post_content">Content</label><br>
|
|
19
|
+
<textarea id="post_content" name="post[content]" class="error"></textarea><label for="post_content" class="error"></label>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<label for="post_view_count">View count</label><br>
|
|
23
|
+
<input id="post_view_count" name="post[view_count]" type="text" class="error"><label for="post_view_count" class="error"></label>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="field">
|
|
26
|
+
<label for="post_author_email">Author email</label><br>
|
|
27
|
+
<input id="post_author_email" name="post[author_email]" type="text">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="actions">
|
|
30
|
+
<input name="commit" type="submit" value="Create Post">
|
|
31
|
+
</div>
|
|
32
|
+
</form>
|
|
33
|
+
|
|
34
|
+
<a href="/posts">Back</a>
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
</body></html>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
<div id="error_explanation">
|
|
13
|
+
<h2>1 error prohibited this post from being saved:</h2>
|
|
14
|
+
|
|
15
|
+
<ul>
|
|
16
|
+
<li>User User ID Must be a number.</li>
|
|
17
|
+
</ul>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div class="field">
|
|
21
|
+
<label for="post_title">Title</label><br>
|
|
22
|
+
<input id="post_title" name="post[title]" type="text" value="Scrub the toilet">
|
|
23
|
+
</div>
|
|
24
|
+
<div class="field">
|
|
25
|
+
<label for="post_content">Content</label><br>
|
|
26
|
+
<textarea id="post_content" name="post[content]">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</textarea>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="field">
|
|
29
|
+
<label for="post_view_count">View count</label><br>
|
|
30
|
+
<input id="post_view_count" name="post[view_count]" type="text" value="0">
|
|
31
|
+
</div>
|
|
32
|
+
<div class="field">
|
|
33
|
+
<label for="post_order">Order</label><br>
|
|
34
|
+
<input id="post_order" name="post[order]" type="text" value="1">
|
|
35
|
+
</div>
|
|
36
|
+
<div class="field">
|
|
37
|
+
<label for="post_author_email">Author email</label><br>
|
|
38
|
+
<input id="post_author_email" name="post[author_email]" type="text" value="">
|
|
39
|
+
</div>
|
|
40
|
+
<div class="field">
|
|
41
|
+
<div class="field_with_errors"><label for="post_user_id">User</label></div><br>
|
|
42
|
+
<div class="field_with_errors"><input id="post_user_id" name="post[user_id]" type="text"></div>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="actions">
|
|
45
|
+
<input name="commit" type="submit" value="Create Post">
|
|
46
|
+
</div>
|
|
47
|
+
</form>
|
|
48
|
+
|
|
49
|
+
<a href="/posts">Back</a>
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
</body></html>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html><html><head>
|
|
2
|
+
<title>Dummy</title>
|
|
3
|
+
<link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet">
|
|
4
|
+
<script data-turbolinks-track="true" src="/assets/application.js"></script>
|
|
5
|
+
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
|
|
9
|
+
<h1>New post</h1>
|
|
10
|
+
|
|
11
|
+
<form accept-charset="UTF-8" action="/posts" class="new_post" data-sync-validations="true" id="new_post" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<label for="post_title">Title</label><br>
|
|
15
|
+
<input id="post_title" name="post[title]" type="text" class="valid">
|
|
16
|
+
</div>
|
|
17
|
+
<div class="field">
|
|
18
|
+
<label for="post_content">Content</label><br>
|
|
19
|
+
<textarea id="post_content" name="post[content]" class="valid"></textarea>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="field">
|
|
22
|
+
<label for="post_view_count">View count</label><br>
|
|
23
|
+
<input id="post_view_count" name="post[view_count]" type="text" class="valid">
|
|
24
|
+
</div>
|
|
25
|
+
<div class="field">
|
|
26
|
+
<label for="post_order">Order</label><br>
|
|
27
|
+
<input id="post_order" name="post[order]" type="text" class="valid">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="field">
|
|
30
|
+
<label for="post_author_email">Author email</label><br>
|
|
31
|
+
<input id="post_author_email" name="post[author_email]" type="text" class="error"><label for="post_author_email" class="error"></label>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="field">
|
|
34
|
+
<label for="post_user_id">User</label><br>
|
|
35
|
+
<input id="post_user_id" name="post[user_id]" type="text" class="error"><label for="post_user_id" class="error"></label>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="actions">
|
|
38
|
+
<input name="commit" type="submit" value="Create Post">
|
|
39
|
+
</div>
|
|
40
|
+
</form>
|
|
41
|
+
|
|
42
|
+
<a href="/posts">Back</a>
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
</body></html>
|