2010-10-21 8 views
0

I ont les suivants sous une forme:Rails - Eléments de forme conditionnelle?

<% = f.hidden_field (: project_id,: value => @ project.id)%>

Ce formulaire contient un @project parfois partielle. Parfois, ce n'est pas le cas. C'est la nature de l'application.

Mais je veux utiliser un partiel parce que c'est une grande forme. Problème ici est si elle ne contient pas @project, la page ERREURS ....

Comment puis-je faire ce qui suit:

  • render Seul le champ caché si @project est défini
  • Si @ le projet n'est pas défini, donnez au champ la valeur = ""

Merci!

+0

Pouvez-vous expliquer pourquoi une instruction conditionnelle pour @project à l'intérieur du partial ne suffira pas? –

+0

Quel genre d'énoncé conditionnel? Je pourrais envelopper dans des blocs IF mais cela ne semble pas Rails élégant? idk je suis nouveau – user479959

Répondre

3

Vous semblez vous demander quelques choses différentes. Si vous voulez rendre le champ sous condition, ce qui signifie le domaine ne semble pas du tout si @project est définie, faites ceci:

<%= f.hidden_field(:project_id, :value => @project.id) if @project %> 

Si vous voulez que la valeur soit vide quand il n'y a pas de projet, vous pouvez rogner l'une de réponse précédente conditionnelle peu:

<%= f.hidden_field (:project_id, :value => @project ? @project.id : '') %> 

il n'y a pas besoin de vérifier que @project est à la fois défini et non nul, car il est une variable globale et de l'appeler directement ne déclenche pas une erreur « pas de méthode ».

0
<%= f.hidden_field (:project_id, :value => defined?(@project) && @project ? @project.id : '') %>