Ceci est ma forme:problèmes avec une forme liste déroulante en Ruby on Rails
<table>
<tbody>
<% form_for :HhActiveCarrier, @carriers, :url => { :action => "update" } do |f| %>
<% for carrier in @carriers %>
<tr>
<%= render :partial => "summary_detail", :locals => {:carrier => carrier, :f => f} %>
</tr>
<% end %>
</tbody>
</table>
<%= submit_tag "Update" %>
<% end %>
Avec mon partielle:
<td class="tn"><%= h(carrier.name.to_s()) -%></td>
<td class="sc"><%= h(carrier.country.to_s()) -%></td>
<td class="sc"><%= select_tag(:country, options_for_select(@countries)) -%></td>
C'est le contrôleur où je définir les variables:
class ActiveCarriersController < ApplicationController
def index
@carriers = HhActiveCarrier.find(:all)
for carrier in @carriers
country = carrier["country"]
if country.nil?
carrier["country"] = "none"
end
end
@countries = ["USA", "UK", "Canada"]
end
Tout cela fonctionne. Cependant, si je fais un changement dans la liste déroulante sous la forme à ceci:
<td class="sc"><%= f.select("country", @countries) -%></td>
Je reçois cette erreur:
Showing app/views/active_carriers/_summary_detail.rhtml where line #3 raised:
undefined method `country' for #<Array:0xef79a08>
Extracted source (around line #3):
1: <td class="tn"><%= h(carrier.name.to_s()) -%></td>
2: <td class="sc"><%= h(carrier.country.to_s()) -%></td>
3: <td class="sc"><%= f.select("country", @countries) -%></td>
Trace of template inclusion: /app/views/active_carriers/_summary.rhtml, >/app/views/active_carriers/index.rhtml
Qu'est-ce que je fais mal avec ma forme choisir? J'utilise Ruby on Rails 2.3.8
Stackoverflow me dit que je n'ai pas beaucoup d'explications pour tout le code que j'ai, alors je suis en train d'écrire. Je ne sais pas vraiment quoi d'autre à expliquer, alors posez des questions si vous ne comprenez pas tout. Aussi, je ne pouvais pas citer le message d'erreur parce que Stackoverflow me disait que j'avais du code qui n'avait pas les blocs de code, donc j'ai dû mettre des blocs de code autour du message d'erreur.
Je pense que vous devez appeler options_for_select (@countries) pour convertir le tableau en options pouvant être sélectionnées. http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_select – lashleigh
Je l'ai changé pour: