bjg a répondu vraiment, mais je pensais que je serais extraire la partie pertinente et amplifient un exemple.
Vous donnez simplement à votre vue une variable chaîne dont la valeur est un chemin Rails nommé, puis utilisez cette valeur dans le Javascript de votre formulaire. Un exemple qui illustre comment une méthode de commande peut spécifier le chemin d'une autre méthode, qui sera ouverte par le script sur la simple pression d'un bouton:
fichier config/routes.rb
:
...
resource :foo, :only => [:show, :reset]
...
match 'foo_reset_path' => 'foo#reset'
commandant rake routes
produira maintenant, parmi autre sortie, ceci:
foo GET /foo(.:format) foo#show
foo_reset_path /foo_reset_path(.:format) foo#reset
foo_reset_path
est ce que nous allons utiliser ici, mais vous pouvez bien sûr utiliser cette méthode avec un chemin Rails nommé.
fichier app/controllers/foo_controller.rb
:
...
def show
@reset_path = "foo_reset_path" # simply the string you'd use in the
# Rails code for opening the path
...
end
...
def reset
... # reset some variables to their default values
redirect_to foo_path # causes the show method to be called, and the HTML
# page to be redisplayed
end
fichier app/views/foo/show.html.erb
:
...
<input type="hidden" id="reset_path" name="reset_path" value="<%= @reset_path %>">
...
<script>
$(document).ready(function() {
...
/* Hang functionality on the "Reset form" button. */
$('#reset_button').click(function() {
var reset_path = $('#reset_path').val();
window.open(reset_path, "_self")
});
...
})
</script>
J'utilise JQuery, mais l'idée de base doit être claire. Le script ajoute un point d'ancrage à l'élément de bouton dont l'ID est reset_button
, de sorte qu'un clic sur le bouton provoque l'appel de la méthode reset
de foo_controller
.
J'ai aussi regardé http://tore.darell.no/pages/javascript_routes – kishore
do vous voulez accéder à toutes les routes en JavaScript comme vous le feriez avec "rake routes"? – Anurag