Ok, j'utilise Rails 5 et la dernière version stable de Ruby. Ce que je tente de faire est d'avoir une boîte de sélection ont l'option correcte sélectionnée sur la vue d'édition.Ruby on Rails - Formulaires pour sélectionner la liste déroulante Option sélectionnée sur Modifier
C'est ce que j'ai jusqu'à présent create_users
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :email
t.string :password
t.integer :user_type_id
t.timestamps
end
end
end
class CreateUserTypes < ActiveRecord::Migration[5.0]
def change
create_table :user_types do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
Il n'y a pas de relations entre ces tables, tous UserType est juste une table de support. Je peux l'obtenir pour sortir la liste déroulante et enregistrer dans la base de données Je ne peux pas obtenir la chose darn pour afficher l'option sélectionnée appropriée sur l'édition.
Voici mon code sous forme
<%= form_for(user) do |f| %>
<% if user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %>
<%= f.text_field :password %>
</div>
<div class="field">
<%= f.label :user_type_id %>
<%#= select_tag('user_type', options_for_select(UserType.all.collect {|ut| ut.name ut.id})) %>
<% user_type_array = UserType.all().map { |type| [type.name, type.id]} %>
<%= f.select(:user_type_id, options_for_select(user_type_array), :selected => f.object.user_type_id) %>
<%#= options_from_collection_for_select(UserType.all(), :id, :name) #just outputs text %>
<%#= f.select_tag('user_type_id', options_from_collection_for_select(UserType.all(), :id, :name)) %>
</div>
<%= params.inspect %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Parfait merci! Travaillé comme un charme, forms_for peut être un peu confus parfois! Merci encore! –