#ruby-on-rails #html #ruby-on-rails-4
#ruby-on-rails #HTML #ruby-on-rails-4
Вопрос:
Я хотел бы, чтобы значение параметра было изменено с имени пользователя на идентификатор пользователя в значении параметра в html.
Например:
<option value="John">John</option>
<option value="Jim">Jim</option>
<option value="Kelly">Kelly</option>
<option value="Monica">Monica</option>
<option value="Ralp">Ralp</option>
Это то, что выводит мой html, и я бы хотел, чтобы значением был идентификатор пользователя, например:
<option value="1">John</option>
<option value="2">Jim</option>
<option value="3">Kelly</option>
<option value="4">Monica</option>
<option value="5">Ralp</option>
Я также хотел бы, чтобы это было динамичным, чтобы, когда приходит все больше и больше пользователей, мне не приходилось вручную вводить их имена.
Мои rails в настоящее время выглядят следующим образом:
<%= form_tag '/login', method: 'post' do %>
Name:
<br/>
<%= select_tag :user_id, options_for_select(@users) %>
<br/>
<br/>
<%= submit_tag 'Login' %>
<% end %>
И мой контроллер как таковой:
def login_user
user = User.find_by_name(params[:user_id])
if user
session[:user_id] = user.id
redirect_to user_path(user)
return
end
flash[:error] = 'Sorry that user not in the system.'
redirect_to root_path
end
Не мог бы кто-нибудь, пожалуйста, указать мне правильное направление. Заранее благодарю вас.
Ответ №1:
Я не понимаю, что вы подразумеваете под «динамическим». Но следующее должно исправить вашу проблему с выбором
<%= form_tag '/login', method: 'post' do %>
Name:
<br/>
<%= select_tag :user_id, options_for_select(User.all.collect{|u| [u.name, u.id]}) %>
<br/>
<br/>
<%= submit_tag 'Login' %>
<% end %>
Комментарии:
1. это то, что я ищу! Спасибо! Однако это выдает мне следующую ошибку: неопределенное имя метода для «John»:String. Вы случайно не знаете, как это исправить?
2. Изменен мой ответ. Я предполагал, что @users — это список пользовательских объектов
Ответ №2:
Понял, я использовал это вместо:
<%= collection_select(:user, :id, User.all, :id, :name) %>
это дало мне выпадающую вкладку со значением пользователя и именем пользователя. Спасибо вам всем!