| Module | UsersHelper |
| In: |
app/helpers/users_helper.rb
|
Use this to wrap view elements that the user can‘t access. !! Note: this is an interface, not security feature !! You need to do all access control at the controller level.
Example: <%= if_authorized?(:index, User) do link_to(‘List all users’, users_path) end %> | <%= if_authorized?(:edit, @user) do link_to(‘Edit this user’, edit_user_path) end %> | <%= if_authorized?(:destroy, @user) do link_to ‘Destroy’, @user, :confirm => ‘Are you sure?’, :method => :delete end %>
# File app/helpers/users_helper.rb, line 14
14: def if_authorized?(action, resource, &block)
15: if authorized?(action, resource)
16: yield action, resource
17: end
18: end
Link to the current user‘s page (using link_to_user) or to the login page (using link_to_login_with_IP).
# File app/helpers/users_helper.rb, line 82
82: def link_to_current_user(options={})
83: if current_user
84: link_to_user current_user, options
85: else
86: content_text = options.delete(:content_text) || 'not signed in'
87: # kill ignored options from link_to_user
88: [:content_method, :title_method].each{|opt| options.delete(opt)}
89: link_to_login_with_IP content_text, options
90: end
91: end
Link to login page using remote ip address as link content
The :title (and thus, tooltip) is set to the IP address
Examples:
link_to_login_with_IP # => <a href="/login" title="169.69.69.69">169.69.69.69</a> link_to_login_with_IP :content_text => 'not signed in' # => <a href="/login" title="169.69.69.69">not signed in</a>
# File app/helpers/users_helper.rb, line 67
67: def link_to_login_with_IP(content_text=nil, options={})
68: ip_addr = request.remote_ip
69: content_text ||= ip_addr
70: options.reverse_merge! :title => ip_addr
71: if tag = options.delete(:tag)
72: content_tag tag, h(content_text), options
73: else
74: link_to h(content_text), login_path, options
75: end
76: end
Link to user‘s page (‘users/1’)
By default, their login is used as link text and link title (tooltip)
Takes options
Examples:
link_to_user @user
# => <a href="/users/3" title="barmy">barmy</a>
# if you've added a .name attribute:
content_tag :span, :class => :vcard do
(link_to_user user, :class => 'fn n', :title_method => :login, :content_method => :name) +
': ' + (content_tag :span, user.email, :class => 'email')
end
# => <span class="vcard"><a href="/users/3" title="barmy" class="fn n">Cyril Fotheringay-Phipps</a>: <span class="email">barmy@blandings.com</span></span>
link_to_user @user, :content_text => 'Your user page'
# => <a href="/users/3" title="barmy" class="nickname">Your user page</a>
# File app/helpers/users_helper.rb, line 46
46: def link_to_user(user, options={})
47: raise "Invalid user" unless user
48: options.reverse_merge! :content_method => :login, :title_method => :login, :class => :nickname
49: content_text = options.delete(:content_text)
50: content_text ||= user.send(options.delete(:content_method))
51: options[:title] ||= user.send(options.delete(:title_method))
52: link_to h(content_text), user_path(user), options
53: end