Search code examples
activerecordruby-on-rails-5simple-form

Simple_form issues


I have a problem with simple_form's associations.

Here are the models "linked"

class Contact < ApplicationRecord
  belongs_to :state
end

class State < ApplicationRecord
  CATEGORIES = [ "not-contacted", "on-going", "called"]
  has_many :contacts
  validates :category, inclusion: { in: CATEGORIES }
end

I have also a State seed with the three states above.

I'm creating the new form for a contact.

Controller :

def new
  @contact = Contact.new
  @states = State.all
end

def create
  @contact = Contact.new(contact_params)
  if @contact.save
    redirect_to contact_path(params[:id])
  else
    render :new
  end
end

View:

<%= simple_form_for(@contact) do |f| %>
  <%= f.input :last_name, label: 'Nom' %>
  <%= f.input :first_name, label: 'Prénom' %>
  <%= f.input :number, label: 'Téléphone' %>
  <%= f.input :email, label: 'Mail' %>
  <%= f.input :address, label: 'Adresse' %>
  <%= f.association :state, collection: State.order(:category), prompt: "Choisir un état" %>
  <%= f.input :grade, label: 'Note', collection:[1, 2, 3, 4, 5]  %>
  <%= f.submit 'Créer le contact', class:'btn-modifications' %>
<% end %>

But I have a collection not with a list of "on-going", "called", "not-contacted" but I have a list with this:

State:0x00007fcb3afcfca8

How can I display the list I want?


Solution

  • You need to change it to below

    <%= f.association :state, collection: State.order(:category), label_method: :category, value_method: :id,prompt: "Choisir un état" %>