2010-09-06 9 views
0

J'ai des problèmes pour essayer de définir des valeurs de symbole dans une vue de formulaire. Mon point de vue a quelques variables d'instance utilisées, @task et @team, @team est celui avec lequel j'ai des problèmes. Les tâches ont une: valeur d'équipe qui doit être définie. Dans cette vue, @team contient une valeur, mais lorsque j'appuie sur le bouton "Créer" et que je crée un post, la valeur @team est perdue et @task ne contient aucune valeur d'équipe.Définition de symboles en mode Formulaire - Ruby on Rails

est ici le point de vue que je traite:

Note: le ": l'équipe => @ task.team" ligne ne fonctionne pas

<% form_for(@task) do |f| %> 
    <%= f.error_messages %> 
    <% @task.team = Team.find(@team) %> 
    <p><%= @task.team.title%></p> 
    <p> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </p> 
    <p> 
    <%= f.label :hours %><br /> 
    <%= f.text_field :hours %> 
    </p> 

    <p> 
    <%= f.label :team %><br /> 
    <% :team => @task.team %> 
    </p> 
    <p> 
    <%= f.submit 'Create'%> 
    </p> 
<% end %> 

La méthode Post qui est appelé à Créer:

def create 
    @task = Task.new(params[:task]) 

    respond_to do |format| 
     if @task.save 
     format.html { redirect_to(@task, :notice => 'Task was successfully created.') } 
     format.xml { render :xml => @task, :status => :created, :location => @task } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @task.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 
+0

Les équipes doivent-elles être une boîte de sélection dont vous pouvez choisir l'équipe? Le symbole de votre équipe ne passera pas cette page. Je pense que vous devrez utiliser un élément de formulaire pour conserver la valeur de l'équipe pour qu'il atteigne le formulaire. – spig

+0

J'essayais d'éviter ça. J'ai une "tâche d'ajout" pour chaque équipe, la variable d'instance @team contient l'équipe qui a appelé la nouvelle vue de tâche – user426898

Répondre

0

@Jordinl a raison lorsqu'il mentionne que vous pouvez utiliser un champ de formulaire caché. Vous pouvez également étendue automatiquement la tâche à l'équipe dans le contrôleur en faisant quelque chose comme

@team = Team.find(params[:team]) 

puis

@team.tasks << Task.new(params[:task]) 

Vous aurez besoin d'avoir une association has_many mis en place dans le modèle d'équipe pour les tâches

has_many :tasks 

pour que cela fonctionne. Chaque tâche aura également besoin de l'identifiant de l'équipe, mais il semble que vous l'ayez déjà.

0

Pourquoi ne pas le définir comme champ masqué?

<%= f.hidden_field :team, :value => @task.team %>