Module: Hammock::HamlinkTo::InstanceMethods
- Defined in:
- lib/hammock/hamlink_to.rb
Instance Method Summary collapse
-
#hamlink_to(*args) ⇒ Object
Generate a restful link to verb the provided resources if the request would be allowed under the current scope.
Instance Method Details
#hamlink_to(*args) ⇒ Object
Generate a restful link to verb the provided resources if the request would be allowed under the current scope. If the scope would not allow the specified request, the link is ommitted entirely from the page.
Use this method to render edit and delete links, and anything else that is only available to certain users or under certain conditions.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/hammock/hamlink_to.rb', line 19 def hamlink_to *args opts = args. verb = args.first if args.first.is_a?(Symbol) entity = args.last if can_verb_entity?(verb, entity) route = route_for *args.push(opts.dragnet(:nest, :format)) opts[:class] = ['current', opts[:class]].squash.join(' ') if opts[:indicate_current] && route.matches?(request) opts[:class] = [link_class_for(route.verb, entity), opts[:class]].squash.join(' ') text = opts.delete(:text) || opts.delete(:text_or_else) if text.is_a?(Symbol) text = entity.send(text) end link_to(text || route.verb, route.path(opts.delete(:params)), opts.merge( :method => (route.http_method unless route.get?) ).dragnet(:method, :class, :id) ) else opts[:else] || opts[:text_or_else] end end |