Module: ActiveScaffold::Helpers::ViewHelpers
Overview
All extra helpers that should be included in the View. Also a dumping ground for uncategorized helpers.
Instance Method Summary
collapse
-
#action_link_html(link, url, html_options, record) ⇒ Object
-
#action_link_html_options(link, url_options, record, html_options) ⇒ Object
-
#action_link_url_options(link, url_options, record, options = {}) ⇒ Object
-
#active_scaffold_config ⇒ Object
access to the configuration variable.
-
#active_scaffold_config_for(*args) ⇒ Object
-
#active_scaffold_controller_for(*args) ⇒ Object
-
#active_scaffold_error_messages_for(*params) ⇒ Object
-
#active_scaffold_ie_stylesheets(frontend = :default) ⇒ Object
Provides stylesheets for IE to include with stylesheet_link_tag
.
-
#active_scaffold_includes(*args) ⇒ Object
easy way to include ActiveScaffold assets.
-
#active_scaffold_javascripts(frontend = :default) ⇒ Object
Provides list of javascripts to include with javascript_include_tag
You can use this with your javascripts like <%= javascript_include_tag :defaults, ‘your_own_cool_script’, active_scaffold_javascripts, :cache => true %>.
-
#active_scaffold_stylesheets(frontend = :default) ⇒ Object
Provides stylesheets to include with stylesheet_link_tag
.
-
#as_main_div_class ⇒ Object
-
#clean_class_name(name) ⇒ Object
-
#clean_column_name(name) ⇒ Object
-
#column_calculation(column) ⇒ Object
-
#column_class(column, column_value, record) ⇒ Object
-
#column_empty?(column_value) ⇒ Boolean
-
#column_heading_class(column, sorting) ⇒ Object
-
#column_show_add_existing(column) ⇒ Object
-
#column_show_add_new(column, associated, record) ⇒ Object
-
#controller_path_for_activerecord(klass) ⇒ Object
-
#form_remote_upload_tag(url_for_options = {}, options = {}) ⇒ Object
-
#generate_temporary_id ⇒ Object
-
#get_action_link_id(url_options, record = nil, column = nil) ⇒ Object
-
#in_subform?(column, parent_record) ⇒ Boolean
Should this column be displayed in the subform?.
-
#link_to_visibility_toggle(id, options = {}) ⇒ Object
Creates a javascript-based link that toggles the visibility of some element on the page.
-
#loading_indicator_tag(options) ⇒ Object
a general-use loading indicator (the “stuff is happening, please wait” feedback).
-
#option_tags_for(select_options, options = {}) ⇒ Object
Turns [[label, value]] into <option> tags Takes optional parameter of :include_blank.
-
#render_action_link(link, url_options, record = nil, html_options = {}) ⇒ Object
-
#render_column_calculation(column) ⇒ Object
-
#render_group_action_link(link, url_options, options, record = nil) ⇒ Object
-
#skip_action_link(link, *args) ⇒ Object
-
#url_options_for_nested_link(column, record, link, url_options, options = {}) ⇒ Object
-
#url_options_for_sti_link(column, record, link, url_options, options = {}) ⇒ Object
#active_scaffold_human_condition_for, #override_human_condition, #override_human_condition?, #override_human_condition_column, #override_human_condition_column?
#active_scaffold_search_boolean, #active_scaffold_search_date, #active_scaffold_search_datetime, #active_scaffold_search_for, #active_scaffold_search_multi_select, #active_scaffold_search_null, #active_scaffold_search_options, #active_scaffold_search_range, #active_scaffold_search_range_comparator_options, #active_scaffold_search_range_string?, #active_scaffold_search_select, #active_scaffold_search_text, #active_scaffold_search_time, #field_search_datetime_value, #field_search_params_range_values, #include_null_comparators?, #override_search, #override_search?, #override_search_field, #override_search_field_name, #searched_by?, #visibles_and_hiddens
#active_scaffold_add_existing_input, #active_scaffold_add_existing_label, #active_scaffold_checkbox_list, #active_scaffold_input_boolean, #active_scaffold_input_carrierwave, #active_scaffold_input_checkbox, #active_scaffold_input_dragonfly, #active_scaffold_input_enum, #active_scaffold_input_file_column, #active_scaffold_input_for, #active_scaffold_input_options, #active_scaffold_input_paperclip, #active_scaffold_input_password, #active_scaffold_input_plural_association, #active_scaffold_input_radio, #active_scaffold_input_select, #active_scaffold_input_singular_association, #active_scaffold_input_text_options, #active_scaffold_input_textarea, #active_scaffold_input_virtual, #active_scaffold_render_input, #active_scaffold_translated_option, #column_renders_as, #column_scope, #form_partial_for_column, #onsubmit, #override_form_field, #override_form_field_name, #override_form_field_partial, #override_form_field_partial?, #override_input, #override_input?, #override_subform_partial, #override_subform_partial?, #subform_partial_for_column, #update_columns_options
#active_scaffold_show_text, #override_show_column_ui, #override_show_column_ui?, #show_column_override, #show_column_override_name, #show_column_value
#action_link_to_inline_form, #active_scaffold_column_carrierwave, #active_scaffold_column_checkbox, #active_scaffold_column_download_link, #active_scaffold_column_download_link_with_filename, #active_scaffold_column_dragonfly, #active_scaffold_column_paperclip, #active_scaffold_column_select, #active_scaffold_column_text, #active_scaffold_column_thumbnail, #active_scaffold_inplace_edit, #cache_association, #clean_column_value, #column_heading_value, #column_link_authorized?, #column_override, #column_override_name, #configure_column_link, #format_association_value, #format_column_value, #format_inplace_edit_column, #format_number_value, #format_value, #get_column_value, #inplace_edit?, #inplace_edit_cloning?, #inplace_edit_control, #inplace_edit_control_css_class, #inplace_edit_tag_attributes, #mark_column_heading, #override_column_ui, #override_column_ui?, #render_column_heading, #render_list_column, #render_nested_view
#pagination_ajax_link, #pagination_ajax_links
#association_options_count, #association_options_find, #options_for_association, #options_for_association_conditions, #options_for_association_count
Methods included from IdHelpers
#action_iframe_id, #action_link_id, #active_scaffold_calculations_id, #active_scaffold_column_header_id, #active_scaffold_content_id, #active_scaffold_id, #active_scaffold_messages_id, #active_scaffold_tbody_id, #association_subform_id, #before_header_id, #controller_id, #element_cell_id, #element_form_id, #element_messages_id, #element_row_id, #empty_message_id, #id_from_controller, #loading_indicator_id, #search_input_id, #sub_form_id, #sub_form_list_id, #sub_section_id, #table_action_id
Instance Method Details
#action_link_html(link, url, html_options, record) ⇒ Object
202
203
204
205
206
207
208
209
210
211
212
213
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 202
def action_link_html(link, url, html_options, record)
label = url.delete(:link) if url.is_a?(Hash)
label ||= link.label
if link.image.nil?
html = link_to(label, url, html_options)
else
html = link_to(image_tag(link.image[:name] , :size => link.image[:size], :alt => label), url, html_options)
end
url.nil? ? html.sub(/href=".*?"/, '').html_safe : html.html_safe
end
|
#action_link_html_options(link, url_options, record, html_options) ⇒ Object
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 162
def action_link_html_options(link, url_options, record, html_options)
link_id = get_action_link_id(url_options, record, link.column)
html_options.reverse_merge! link.html_options.merge(:class => link.action.to_s)
html_options[:method] = link.method if link.method != :get
html_options['data-confirm'] = link.confirm(record.try(:to_label)) if link.confirm?
html_options['data-position'] = link.position if link.position and link.inline?
html_options[:class] += ' as_action' if link.inline?
html_options['data-action'] = link.action if link.inline?
if link.
html_options['data-popup'] = true
html_options[:target] = '_blank'
end
html_options[:id] = link_id
html_options[:remote] = true unless link.page? || link.
if link.dhtml_confirm?
html_options[:class] += ' as_action' if !link.inline?
html_options[:page_link] = 'true' if !link.inline?
html_options[:dhtml_confirm] = link.dhtml_confirm.value
html_options[:onclick] = link.dhtml_confirm.onclick_function(controller, link_id)
end
html_options[:class] += " #{link.html_options[:class]}" unless link.html_options[:class].blank?
html_options
end
|
#action_link_url_options(link, url_options, record, options = {}) ⇒ Object
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 147
def action_link_url_options(link, url_options, record, options = {})
url_options = url_options.clone
url_options[:action] = link.action
url_options[:controller] = link.controller.to_s if link.controller
url_options.delete(:search) if link.controller and link.controller.to_s != params[:controller]
url_options.merge! link.parameters if link.parameters
@link_record = record
url_options.merge! self.instance_eval(&(link.dynamic_parameters)) if link.dynamic_parameters.is_a?(Proc)
@link_record = nil
url_options_for_nested_link(link.column, record, link, url_options, options) if link.nested_link?
url_options_for_sti_link(link.column, record, link, url_options, options) unless record.nil? || active_scaffold_config.sti_children.nil?
url_options[:_method] = link.method if !link.confirm? && link.inline? && link.method != :get
url_options
end
|
#active_scaffold_config ⇒ Object
access to the configuration variable
20
21
22
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 20
def active_scaffold_config
controller.class.active_scaffold_config
end
|
#active_scaffold_config_for(*args) ⇒ Object
24
25
26
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 24
def active_scaffold_config_for(*args)
controller.class.active_scaffold_config_for(*args)
end
|
#active_scaffold_controller_for(*args) ⇒ Object
28
29
30
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 28
def active_scaffold_controller_for(*args)
controller.class.active_scaffold_controller_for(*args)
end
|
#active_scaffold_error_messages_for(*params) ⇒ Object
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 318
def active_scaffold_error_messages_for(*params)
options = params..symbolize_keys
options.reverse_merge!(:container_tag => :div, :list_type => :ul)
objects = Array.wrap(options.delete(:object) || params).map do |object|
object = instance_variable_get("@#{object}") unless object.respond_to?(:to_model)
object = convert_to_model(object)
if object.class.respond_to?(:model_name)
options[:object_name] ||= object.class.model_name.human.downcase
end
object
end
objects.compact!
count = objects.inject(0) {|sum, object| sum + object.errors.count }
unless count.zero?
html = {}
[:id, :class].each do |key|
if options.include?(key)
value = options[key]
html[key] = value unless value.blank?
else
html[key] = 'errorExplanation'
end
end
options[:object_name] ||= params.first
= if options.include?(:header_message)
options[:header_message]
else
as_('errors.template.header', :count => count, :model => options[:object_name].to_s.gsub('_', ' '))
end
message = options.include?(:message) ? options[:message] : as_('errors.template.body')
error_messages = objects.sum do |object|
object.errors.full_messages.map do |msg|
options[:list_type] != :br ? content_tag(:li, msg) : msg
end
end
error_messages = if options[:list_type] == :br
error_messages.join('<br/>').html_safe
else
content_tag(options[:list_type], error_messages.join.html_safe)
end
contents = []
contents << content_tag(options[:header_tag] || :h2, ) unless .blank?
contents << content_tag(:p, message) unless message.blank?
contents << error_messages
contents = contents.join.html_safe
options[:container_tag] ? content_tag(options[:container_tag], contents, html) : contents
else
''
end
end
|
#active_scaffold_ie_stylesheets(frontend = :default) ⇒ Object
Provides stylesheets for IE to include with stylesheet_link_tag
96
97
98
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 96
def active_scaffold_ie_stylesheets(frontend = :default)
[ActiveScaffold::Config::Core.asset_path("stylesheet-ie.css", frontend)]
end
|
#active_scaffold_includes(*args) ⇒ Object
easy way to include ActiveScaffold assets
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 101
def active_scaffold_includes(*args)
frontend = args.first.is_a?(Symbol) ? args.shift : :default
options = args.first.is_a?(Hash) ? args.shift : {}
js = javascript_include_tag(*active_scaffold_javascripts(frontend).push(options))
css = stylesheet_link_tag(*active_scaffold_stylesheets(frontend).push(options))
options[:cache] += '_ie' if options[:cache].is_a? String
options[:concat] += '_ie' if options[:concat].is_a? String
ie_css = stylesheet_link_tag(*active_scaffold_ie_stylesheets(frontend).push(options))
js + "\n" + css + "\n<!--[if IE]>".html_safe + ie_css + "<![endif]-->\n".html_safe
end
|
#active_scaffold_javascripts(frontend = :default) ⇒ Object
Provides list of javascripts to include with javascript_include_tag
You can use this with your javascripts like
<%= javascript_include_tag :defaults, 'your_own_cool_script', active_scaffold_javascripts, :cache => true %>
#active_scaffold_stylesheets(frontend = :default) ⇒ Object
Provides stylesheets to include with stylesheet_link_tag
91
92
93
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 91
def active_scaffold_stylesheets(frontend = :default)
[ActiveScaffold::Config::Core.asset_path("stylesheet.css", frontend)]
end
|
#as_main_div_class ⇒ Object
267
268
269
270
271
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 267
def as_main_div_class
classes = ["active-scaffold", "active-scaffold-#{controller_id}", "#{params[:controller]}-view", "#{active_scaffold_config.theme}-theme"]
classes << "as_touch" if touch_device?
classes.join(' ')
end
|
#clean_class_name(name) ⇒ Object
314
315
316
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 314
def clean_class_name(name)
name.underscore.gsub('/', '_')
end
|
#clean_column_name(name) ⇒ Object
310
311
312
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 310
def clean_column_name(name)
name.to_s.gsub('?', '')
end
|
#column_calculation(column) ⇒ Object
280
281
282
283
284
285
286
287
288
289
290
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 280
def column_calculation(column)
unless column.calculate.instance_of? Proc
conditions = controller.send(:all_conditions)
includes = active_scaffold_config.list.count_includes
includes ||= controller.send(:active_scaffold_includes) unless conditions.nil?
calculation = beginning_of_chain.calculate(column.calculate, column.name, :conditions => conditions,
:joins => controller.send(:joins_for_collection), :include => includes)
else
column.calculate.call(@records)
end
end
|
#column_class(column, column_value, record) ⇒ Object
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 243
def column_class(column, column_value, record)
classes = []
classes << "#{column.name}-column"
if column.css_class.is_a?(Proc)
css_class = column.css_class.call(column_value, record)
classes << css_class unless css_class.nil?
else
classes << column.css_class
end unless column.css_class.nil?
classes << 'empty' if column_empty? column_value
classes << 'sorted' if active_scaffold_config.list.user.sorting.sorts_on?(column)
classes << 'numeric' if column.column and [:decimal, :float, :integer].include?(column.column.type)
classes.join(' ').rstrip
end
|
#column_empty?(column_value) ⇒ Boolean
273
274
275
276
277
278
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 273
def column_empty?(column_value)
empty = column_value.nil?
empty ||= column_value.blank? if column_value.respond_to? :blank?
empty ||= [' ', active_scaffold_config.list.empty_field_text].include? column_value if String === column_value
return empty
end
|
#column_heading_class(column, sorting) ⇒ Object
259
260
261
262
263
264
265
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 259
def column_heading_class(column, sorting)
classes = []
classes << "#{column.name}-column_heading"
classes << "sorted #{sorting.direction_of(column).downcase}" if sorting.sorts_on? column
classes << column.css_class unless column.css_class.nil? || column.css_class.is_a?(Proc)
classes.join(' ')
end
|
#column_show_add_existing(column) ⇒ Object
300
301
302
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 300
def column_show_add_existing(column)
(column.allow_add_existing and options_for_association_count(column.association) > 0)
end
|
#column_show_add_new(column, associated, record) ⇒ Object
304
305
306
307
308
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 304
def column_show_add_new(column, associated, record)
value = (column.plural_association? && !column.readonly_association?) || (column.singular_association? and not associated.empty?)
value = false unless column.association.klass.authorized_for?(:crud_type => :create)
value
end
|
#controller_path_for_activerecord(klass) ⇒ Object
36
37
38
39
40
41
42
43
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 36
def controller_path_for_activerecord(klass)
begin
controller = active_scaffold_controller_for(klass)
controller.controller_path
rescue ActiveScaffold::ControllerNotFound
controller = nil
end
end
|
72
73
74
75
76
77
78
79
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 72
def form_remote_upload_tag(url_for_options = {}, options = {})
options[:target] = action_iframe_id(url_for_options)
options[:multipart] ||= true
options[:class] = "#{options[:class]} as_remote_upload".strip
output=""
output << form_tag(url_for_options, options)
(output << "<iframe id='#{action_iframe_id(url_for_options)}' name='#{action_iframe_id(url_for_options)}' style='display:none'></iframe>").html_safe
end
|
#generate_temporary_id ⇒ Object
45
46
47
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 45
def generate_temporary_id
(Time.now.to_f*1000).to_i.to_s
end
|
#get_action_link_id(url_options, record = nil, column = nil) ⇒ Object
189
190
191
192
193
194
195
196
197
198
199
200
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 189
def get_action_link_id(url_options, record = nil, column = nil)
id = url_options[:id] || url_options[:parent_id]
id = "#{column.association.name}-#{record.id}" if column && column.plural_association?
if record.try(column.association.name.to_sym).present?
id = "#{column.association.name}-#{record.send(column.association.name).id}-#{record.id}"
else
id = "#{column.association.name}-#{record.id}" unless record.nil?
end if column && column.singular_association?
id = "#{id}-#{url_options[:batch_scope].downcase}" if url_options[:batch_scope]
action_id = "#{id_from_controller(url_options[:controller]) + '-' if url_options[:parent_controller]}#{url_options[:action].to_s}"
action_link_id(action_id, id)
end
|
Should this column be displayed in the subform?
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 60
def in_subform?(column, parent_record)
return true unless column.association
return false if column.polymorphic_association?
return false if column.association.reverse_for?(parent_record.class)
return true
end
|
#link_to_visibility_toggle(id, options = {}) ⇒ Object
Creates a javascript-based link that toggles the visibility of some element on the page. By default, it toggles the visibility of the sibling after the one it’s nested in. You may pass custom javascript logic in options to change that, though. For example, you could say :of => ‘$(“my_div_id”)’. You may also flag whether the other element is visible by default or not, and the initial text will adjust accordingly.
122
123
124
125
126
127
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 122
def link_to_visibility_toggle(id, options = {})
options[:default_visible] = true if options[:default_visible].nil?
options[:hide_label] = as_(:hide)
options[:show_label] = as_(:show)
javascript_tag("ActiveScaffold.create_visibility_toggle('#{id}', #{options.to_json});")
end
|
#loading_indicator_tag(options) ⇒ Object
a general-use loading indicator (the “stuff is happening, please wait” feedback)
115
116
117
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 115
def loading_indicator_tag(options)
image_tag "/images/active_scaffold/default/indicator.gif", :style => "visibility:hidden;", :id => loading_indicator_id(options), :alt => "loading indicator", :class => "loading-indicator"
end
|
Turns [[label, value]] into <option> tags Takes optional parameter of :include_blank
51
52
53
54
55
56
57
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 51
def option_tags_for(select_options, options = {})
select_options.insert(0,[as_(:_select_),nil]) if options[:include_blank]
select_options.collect do |option|
label, value = option[0], option[1]
value.nil? ? "<option value="">#{label}</option>" : "<option value=\"#{value}\">#{label}</option>"
end
end
|
#render_action_link(link, url_options, record = nil, html_options = {}) ⇒ Object
133
134
135
136
137
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 133
def render_action_link(link, url_options, record = nil, html_options = {})
url_options = action_link_url_options(link, url_options, record)
html_options = action_link_html_options(link, url_options, record, html_options)
action_link_html(link, url_options, html_options, record)
end
|
#render_column_calculation(column) ⇒ Object
292
293
294
295
296
297
298
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 292
def render_column_calculation(column)
calculation = column_calculation(column)
override_formatter = "render_#{column.name}_#{column.calculate}"
calculation = send(override_formatter, calculation) if respond_to? override_formatter
"#{"#{as_(column.calculate)}: " unless column.calculate.is_a? Proc}#{format_column_value nil, column, calculation}"
end
|
#render_group_action_link(link, url_options, options, record = nil) ⇒ Object
139
140
141
142
143
144
145
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 139
def render_group_action_link(link, url_options, options, record = nil)
if link.type == :member && !options[:authorized]
action_link_html(link, nil, {:class => "disabled #{link.action}#{link.html_options[:class].blank? ? '' : (' ' + link.html_options[:class])}"}, record)
else
render_action_link(link, url_options, record)
end
end
|
#skip_action_link(link, *args) ⇒ Object
129
130
131
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 129
def skip_action_link(link, *args)
(!link.ignore_method.nil? and controller.try(link.ignore_method, *args)) || ((link.security_method_set? or controller.respond_to? link.security_method) and !controller.send(link.security_method, *args))
end
|
#url_options_for_nested_link(column, record, link, url_options, options = {}) ⇒ Object
215
216
217
218
219
220
221
222
223
224
225
226
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 215
def url_options_for_nested_link(column, record, link, url_options, options = {})
if column && column.association
url_options[:assoc_id] = url_options.delete(:id)
url_options[:id] = record.send(column.association.name).id if column.singular_association? && record.send(column.association.name).present?
link.eid = "#{controller_id.from(3)}_#{record.id}_#{column.association.name}" unless options.has_key?(:reuse_eid)
url_options[:eid] = link.eid
elsif link.parameters && link.parameters[:named_scope]
url_options[:assoc_id] = url_options.delete(:id)
link.eid = "#{controller_id.from(3)}_#{record.id}_#{link.parameters[:named_scope]}" unless options.has_key?(:reuse_eid)
url_options[:eid] = link.eid
end
end
|
#url_options_for_sti_link(column, record, link, url_options, options = {}) ⇒ Object
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
# File 'lib/active_scaffold/helpers/view_helpers.rb', line 228
def url_options_for_sti_link(column, record, link, url_options, options = {})
if link.column.nil?
sti_controller_path = controller_path_for_activerecord(record.class)
if sti_controller_path
url_options[:controller] = sti_controller_path
url_options[:parent_sti] = controller_path
end
end
end
|