The urls module is accessible via the webhelpers.rails module.
Generates a form containing a sole button that submits to the URL given by url.
Use this method instead of link_to for actions that do not have the safe HTTP GET semantics implied by using a hypertext link.
The parameters are the same as for link_to. Any html_options that you pass will be applied to the inner input element. In particular, pass
disabled = True/False
as part of html_options to control whether the button is disabled. The generated form element is given the class 'button-to', to which you can attach CSS styles for display purposes.
The submit button itself will be displayed as an image if you provide both type and src as followed:
type='image', src='icon_delete.gif'
The src path will be computed as the image_tag() computes it's source argument.
Example 1:
# inside of controller for "feeds"
>> button_to("Edit", url(action='edit', id=3))
<form method="POST" action="/feeds/edit/3" class="button-to">
<div><input value="Edit" type="submit" /></div>
</form>
Example 2:
>> button_to("Destroy", url(action='destroy', id=3), confirm="Are you sure?", method='DELETE')
<form method="POST" action="/feeds/destroy/3" class="button-to">
<div>
<input type="hidden" name="_method" value="DELETE" />
<input onclick="return confirm('Are you sure?');" value="Destroy" type="submit" />
</div>
</form>
Example 3:
# Button as an image.
>> button_to("Edit", url(action='edit', id=3), type='image', src='icon_delete.gif')
<form method="POST" action="/feeds/edit/3" class="button-to">
<div><input alt="Edit" src="/images/icon_delete.gif" type="image" value="Edit" /></div>
</form>
NOTE: This method generates HTML code that represents a form. Forms are "block" content, which means that you should not try to insert them into your HTML where only inline content is expected. For example, you can legally insert a form inside of a div or td element or in between p elements, but not in the middle of a run of text, nor can you place a form within another form. (Bottom line: Always validate your HTML before going public.)
Obfuscates data in a Javascript tag
Example:
>>> js_obfuscate("<input type='hidden' name='check' value='valid' />")
'<script type="text/javascript">\n//<![CDATA[\neval(unescape(\'%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%69%6e%70%75%74%20%74%79%70%65%3d%27%68%69%64%64%65%6e%27%20%6e%61%6d%65%3d%27%63%68%65%63%6b%27%20%76%61%6c%75%65%3d%27%76%61%6c%69%64%27%20%2f%3e%27%29%3b\'))\n//]]>\n</script>'
Creates a link tag of the given name using an URL created by the set of options.
See the valid options in the documentation for Routes url_for.
The html_options has three special features. One for creating javascript confirm alerts where if you pass confirm='Are you sure?' , the link will be guarded with a JS popup asking that question. If the user accepts, the link is processed, otherwise not.
Another for creating a popup window, which is done by either passing popup with True or the options of the window in Javascript form.
And a third for making the link do a POST request (instead of the regular GET) through a dynamically added form element that is instantly submitted. Note that if the user has turned off Javascript, the request will fall back on the GET. So its your responsibility to determine what the action should be once it arrives at the controller. The POST form is turned on by passing post as True. Note, it's not possible to use POST requests and popup targets at the same time (an exception will be thrown).
Examples:
>> link_to("Delete this page", url(action="destroy", id=4), confirm="Are you sure?")
>> link_to("Help", url(action="help"), popup=True)
>> link_to("Busy loop", url(action="busy"), popup=['new_window', 'height=300,width=600'])
>> link_to("Destroy account", url(action="destroy"), confirm="Are you sure?", method='delete')
Conditionally create a link tag of the given name using the url
If condition is True only the name is returned.
Conditionally create a link tag of the given name using the url
If condition is True only the name is returned.
Conditionally create a link tag of the given name using the url
If the current request uri is the same as the link's only the name is returned. This is useful for creating link bars where you don't want to link to the page currently being viewed.
Creates a link tag for starting an email to the specified email_address, which is also used as the name of the link unless name is specified. Additional HTML options, such as class or id, can be passed in the html_options hash.
You can also make it difficult for spiders to harvest email address by obfuscating them.
Examples:
>>> mail_to("me@domain.com", "My email", encode = "javascript")
'<script type="text/javascript">\n//<![CDATA[\neval(unescape(\'%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%22%3e%4d%79%20%65%6d%61%69%6c%3c%2f%61%3e%27%29%3b\'))\n//]]>\n</script>'
>>> mail_to("me@domain.com", "My email", encode = "hex")
'<a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>'
You can also specify the cc address, bcc address, subject, and body parts of the message header to create a complex e-mail using the corresponding cc, bcc, subject, and body keyword arguments. Each of these options are URI escaped and then appended to the email_address before being output. Be aware that javascript keywords will not be escaped and may break this feature when encoding with javascript.
Examples:
>>> mail_to("me@domain.com", "My email", cc="ccaddress@domain.com", bcc="bccaddress@domain.com", subject="This is an example email", body= "This is the body of the message.")
'<a href="mailto:me@domain.com?cc=ccaddress%40domain.com&body=This%20is%20the%20body%20of%20the%20message.&subject=This%20is%20an%20example%20email&bcc=bccaddress%40domain.com">My email</a>'
Lazily evaluates url_for() arguments
Used instead of url_for() for functions so that the function will be evaluated in a lazy manner rather than at initial function call.
See the source for more information.