цикл на выбранном входе ruby on rails

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

Я пытаюсь выполнить ввод select для всех моих пользователей в ruby on rails, это почти работает, но дело в том, что не получается имя пользователя моего пользователя, но я отображаю что-то вроде этого : #<User:0x007f8cc1024d60>

Я создал 3 пользователя в своей консоли, я могу видеть их, пока я нахожусь на консоли rails, я получил это в своем контроллере :

   def new
    @bug = Bug.new
    @users = User.all
  end
  

Также мои параметры

 def bug_params
    params.require(:bug).permit(:owner, :title, :description)
  end
  

И в моем html :

 <%= form_with model: @bug do |form| %>
<%= form.select :owner, @users %>

<%= form.text_field :title, placeholder: "title" %>
<%= form.text_area :description, placeholder: "description" %>
<%= form.submit %>
<% end %>
  

Кто-нибудь может объяснить мне, что не так?

Комментарии:

1. Вы определили to_s метод в User классе?

Ответ №1:

С помощью вашего помощника по select форме вы возвращаете только коллекцию User экземпляров.

Как указано в документации, вам нужно собрать, какой атрибут User вы хотите передать в качестве значения параметра и отображения параметра.
Например:

 <%= form.select :owner, @users.collect {|u| [ u.name, u.id ] } %>

#=> output
#  <select name="bug[owner]">
#    <option value="1">John</option>
#    <option value="2">Joe</option>
#  </select>
  

Ответ №2:

Используется collection_select для создания выбора из коллекции записей.

 <%= form_with model: @bug do |form| %>
  <%= form.collection_select(:owner, @users, :id, :name) %>
  <%= form.text_field :title, placeholder: "title" %>
  <%= form.text_area :description, placeholder: "description" %>
  <%= form.submit %>
<% end %>