#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 %>