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'
.