2017-05-01 1 views
-1

J'ai une zone de texte 'ohrmarke' où je peux entrer plusieurs chaînes dans de nouvelles lignes et une fois que je clique sur le bouton créer, les valeurs de la zone de texte seront supprimées avec '\ r \ n 'et chaque valeur est stockée dans un tableau. Tout se passe dans la méthode de création des contrôleurs.Rails: Passer la valeur du tableau aux paramètres forts

Forme:

<%= simple_form_for Cow.new do |f| %> 
    <%= f.input :ohrmarke, label: "Ohrmarke(n)" %> 
    <!-- ... --> 
<% end %> 

Controller créer:

def create 
    @ohrmarken = params[:cow][:ohrmarke].split("\r\n") 
    @ohrmarken.each do |item| 
     @cow = Cow.new(cow_params) 
     @cow.save 
    end 
    # (...) 
    end 

Pour chaque chaîne je suis entré dans la zone de texte, je veux créer une nouvelle vache. Cependant, 'ohrmarke' n'est pas la seule entrée. Si c'était le cas, j'aurais entré @cow = Cow.new(ohrmarke: item) dans la boucle et cela aurait fonctionné. Il existe d'autres valeurs pour une vache qui doivent être enregistrées en même temps que l'élément individuel. C'est pourquoi j'utilise les cow_params.

def cow_params 
    params.require(:cow).permit(:ohrmarke, :hin, :weg, :stallnummer, :location_id) 
end 

Comme vous pouvez le voir, les autres champs sont 'hin', 'weg', 'stallnummer' et 'LOCATION_ID'. Mais 'ohrmarke' doit être la valeur de l'objet. Cependant, je ne peux pas écrire ohrmarke: article parce que je reçois l'erreur:

syntax error, unexpected ',', expecting => 

Cela se produit également si j'insère une valeur de test comme ohrmarke: 'test'. L'erreur reste toujours si j'utilise :ohrmarke => 'test'.

Répondre

1

Vous pouvez essayer quelque chose comme ceci:

Retirer ohrmarke de cow_params

def cow_params 
    params.require(:cow).permit(:hin, :weg, :stallnummer, :location_id) 
end 

Et dans votre boucle essayez de définir ohrmarke comme celui-ci

@cow = Cow.new(cow_params) 
@cow.ohrmarke = item 
@cow.save