public Method

UrlHelper.link_to_unless(condition, name, options = {}, html_options = {}) { |name| ... }

Creates a link tag of the given name using a URL created by the set of options unless condition is true, in which case only the name is returned. To specialize the default behavior (i.e., show a login link rather than just the plaintext link text), you can pass a block that accepts the name or the full argument list for link_to_unless.

Examples

<%= link_to_unless(@current_user.nil?, "Reply", { :action => "reply" }) %>
# If the user is logged in...
# => <a href="/controller/reply/">Reply</a>

<%=
   link_to_unless(@current_user.nil?, "Reply", { :action => "reply" }) do |name|
     link_to(name, { :controller => "accounts", :action => "signup" })
   end
%>
# If the user is logged in...
# => <a href="/controller/reply/">Reply</a>
# If not...
# => <a href="/accounts/signup">Reply</a>

Source Code

# File action_view/helpers/url_helper.rb, line 294
def link_to_unless(condition, name, options = {}, html_options = {}, &block)
  if condition
    if block_given?
      block.arity <= 1 ? yield(name) : yield(name, options, html_options)
    else
      name
    end
  else
    link_to(name, options, html_options)
  end
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.