select_options 1.0.0 → 1.1.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/README.rdoc
CHANGED
@@ -10,15 +10,23 @@ In Gemfile:
|
|
10
10
|
|
11
11
|
= Usage example
|
12
12
|
|
13
|
-
For example with
|
13
|
+
For example, you have a model User with the field role and a constant ROLES:
|
14
14
|
class User < ActiveRecord::Base
|
15
15
|
ROLES = %w(admin user)
|
16
16
|
...
|
17
17
|
end
|
18
18
|
|
19
|
-
in the template:
|
19
|
+
in the template you have just write:
|
20
20
|
<%= f.select_with_options :role %>
|
21
21
|
|
22
|
+
In case if you have the constant, named differt from the field name, like this:
|
23
|
+
class Shape < ActiveRecord::Base
|
24
|
+
DIMENTION_VALUES = [2, 3]
|
25
|
+
...
|
26
|
+
end
|
27
|
+
in the template you should use option :source
|
28
|
+
<%= f.select_with_options :dimention, :source => Shape::DIMENTION_VALUES %>
|
29
|
+
|
22
30
|
Translations in en.yml for an ActiveRecord child look like this:
|
23
31
|
en:
|
24
32
|
activerecord:
|
@@ -27,6 +35,13 @@ Translations in en.yml for an ActiveRecord child look like this:
|
|
27
35
|
role:
|
28
36
|
admin: Administrator
|
29
37
|
user: User
|
38
|
+
or like this:
|
39
|
+
en:
|
40
|
+
activerecord:
|
41
|
+
attributes:
|
42
|
+
shape:
|
43
|
+
dimention_2: 2D
|
44
|
+
dimention_3: 3D
|
30
45
|
|
31
46
|
This code will generate translated collection of options for select tag:
|
32
47
|
<select name="user[role]">
|
@@ -36,4 +51,4 @@ This code will generate translated collection of options for select tag:
|
|
36
51
|
|
37
52
|
== Copyright
|
38
53
|
|
39
|
-
Copyright (c) 2011 Dmitriy Vorotilin, Evrone.com. See LICENSE.txt for further details.
|
54
|
+
Copyright (c) 2011 Dmitriy Vorotilin, {Evrone.com}[http://evrone.com]. See LICENSE.txt for further details.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module ActiveModel
|
2
2
|
module Translation
|
3
|
-
# Transforms composite attribute names into a
|
3
|
+
# Transforms composite attribute names into a humanized format.
|
4
4
|
# Translations in en.yml for an ActiveRecord child looks like this:
|
5
5
|
# en:
|
6
6
|
# activerecord:
|
@@ -1,14 +1,17 @@
|
|
1
1
|
module ActiveRecord
|
2
2
|
class Base
|
3
|
-
def self.attribute_options(name)
|
3
|
+
def self.attribute_options(name, source_constant = nil)
|
4
|
+
constant = source_constant.presence || constant_for_attribute(name)
|
5
|
+
constant.map { |value| [human_composite_attribute_name(name, value), value] } if constant.present?
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.constant_for_attribute(name)
|
4
9
|
constant_name = name.to_s.pluralize.upcase
|
5
|
-
if const_defined?(constant_name)
|
6
|
-
const_get(constant_name).map { |value| [human_composite_attribute_name(name, value), value] }
|
7
|
-
end
|
10
|
+
const_get(constant_name) if const_defined?(constant_name)
|
8
11
|
end
|
9
12
|
|
10
|
-
def attribute_options(name)
|
11
|
-
self.class.attribute_options(name)
|
13
|
+
def attribute_options(name, source_constant = nil)
|
14
|
+
self.class.attribute_options(name, source_constant)
|
12
15
|
end
|
13
16
|
|
14
17
|
def self.composite_attribute_name?(name)
|
@@ -14,6 +14,7 @@ module SelectOptions
|
|
14
14
|
#
|
15
15
|
# This helper takes parameters like a rails select.
|
16
16
|
def select_with_options(method, options = {}, html_options = {})
|
17
|
-
|
17
|
+
const_name = options.delete(:source)
|
18
|
+
select(method, @object.attribute_options(method, const_name), options, html_options)
|
18
19
|
end
|
19
20
|
end
|
metadata
CHANGED
@@ -1,79 +1,56 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: select_options
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
version: 1.0.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Dmitriy Vorotilin
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-10-04 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: activemodel
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2176981380 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 7
|
29
|
-
segments:
|
30
|
-
- 3
|
31
|
-
- 0
|
32
|
-
- 0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
33
21
|
version: 3.0.0
|
34
22
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: activerecord
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: *2176981380
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: activerecord
|
27
|
+
requirement: &2176980100 !ruby/object:Gem::Requirement
|
40
28
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 7
|
45
|
-
segments:
|
46
|
-
- 3
|
47
|
-
- 0
|
48
|
-
- 0
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
49
32
|
version: 3.0.0
|
50
33
|
type: :runtime
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: actionpack
|
54
34
|
prerelease: false
|
55
|
-
|
35
|
+
version_requirements: *2176980100
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: actionpack
|
38
|
+
requirement: &2176978980 !ruby/object:Gem::Requirement
|
56
39
|
none: false
|
57
|
-
requirements:
|
58
|
-
- -
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
hash: 7
|
61
|
-
segments:
|
62
|
-
- 3
|
63
|
-
- 0
|
64
|
-
- 0
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
65
43
|
version: 3.0.0
|
66
44
|
type: :runtime
|
67
|
-
|
68
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2176978980
|
47
|
+
description: Provides options for rails form_for select helper. It uses some conventions
|
48
|
+
for your models.
|
69
49
|
email: mydeeptown@gmail.com
|
70
50
|
executables: []
|
71
|
-
|
72
51
|
extensions: []
|
73
|
-
|
74
52
|
extra_rdoc_files: []
|
75
|
-
|
76
|
-
files:
|
53
|
+
files:
|
77
54
|
- Gemfile
|
78
55
|
- Gemfile.lock
|
79
56
|
- README.rdoc
|
@@ -85,36 +62,26 @@ files:
|
|
85
62
|
- lib/select_options/active_model/translation.rb
|
86
63
|
homepage: https://github.com/route/select_options
|
87
64
|
licenses: []
|
88
|
-
|
89
65
|
post_install_message:
|
90
66
|
rdoc_options: []
|
91
|
-
|
92
|
-
require_paths:
|
67
|
+
require_paths:
|
93
68
|
- lib
|
94
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
70
|
none: false
|
96
|
-
requirements:
|
97
|
-
- -
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
|
101
|
-
- 0
|
102
|
-
version: "0"
|
103
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
76
|
none: false
|
105
|
-
requirements:
|
106
|
-
- -
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
|
109
|
-
segments:
|
110
|
-
- 0
|
111
|
-
version: "0"
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
112
81
|
requirements: []
|
113
|
-
|
114
82
|
rubyforge_project:
|
115
|
-
rubygems_version: 1.8.
|
83
|
+
rubygems_version: 1.8.10
|
116
84
|
signing_key:
|
117
85
|
specification_version: 3
|
118
86
|
summary: select helper with options for rails form_for.
|
119
87
|
test_files: []
|
120
|
-
|