2016-07-16 13 views
0

Est-il possible d'utiliser une entrée comme chemin d'un "link_to"?Utiliser des rails variables comme chemin

<% @call.each do |call| %> 
    <%= call.title %> 
    <%= link_to "Path Text", call_path(call) %> 
<% end %> 

Le code ci-dessus apparaîtra sur la page d'appel. Si dans le formulaire de création j'ai une entrée pour le path et c'est un string. Est-il possible d'entrer « call_path (appel) » et ensuite utiliser cette entrée comme le chemin link_to, par exemple:

<% @call.each do |call| %> 
    <%= call.title %> 
    <%= link_to "Path Text", call.path %> 
<% end %> 

J'ai essayé ce code et les sorties de lien comme un lien avec l'URL de « call_path (appel "

Dans le modèle d'appel, j'ai défini path:string lorsque j'ai créé le modèle et j'ai :path dans l'instruction d'autorisation du params dans le contrôleur.

+0

Vous ne pouvez pas appeler Ruby (côté serveur) depuis le côté client (navigateur). Qu'est-ce que vous * pouvez * faire est href avec les résultats d'un appel Ruby (tout côté serveur), par exemple, 'Path Text' –

+0

@DaveNewton il n'est donc pas possible d'utiliser l'entrée enregistrée dans une variable comme un chemin? – AJDEV

+0

Ce n'est pas clair pour moi ce que vous demandez. –

Répondre

0

On ne sait pas ce que vous avez tout à fait demander, mais si ce que vous entendez faire est:

  1. utilisateur clique sur un lien
  2. Une action est effectuée sur le serveur en utilisant des variables d'entrée particulières

Ensuite, vous pouvez créer une route POST dans votre fichier de routes pour une nouvelle action dans un contrôleur qui prend en paramètre les entrées dont vous avez besoin, exécute l'action sur le serveur et répond de façon appropriée.

Ou si ce que vous voulez dire est que lorsque l'utilisateur saisit une entrée dans un champ de texte, et que vous voulez changer le lien dynamiquement, vous voulez probablement utiliser JavaScript pour le faire du côté client. Quelque chose comme ça (j'utilise JQuery):

$("#textfield").on('input', function(e) { 
    var text = $(this).val(); 
    // TODO: sanitize 'text' input 
    $("#link").attr('href', text); 
}); 

Je dois vous avertir que si c'est ce que vous essayez de faire, vous devez valider l'entrée que l'utilisateur entre, car il crée un vecteur pour une attaque par injection de script.