在Rails教程中,有一个很棒的章节,介绍如何使用用户和微博创建一个玩具应用程序。但是,在编辑微博时,我只能编辑user_id,这是一个数值,而不是用户名。是否有一种简单的方法可以在应用程序中强制显示用户名而不是用户ID? 我看了app / views / microposts / _form.html.erb,它说:
<div class="field">
<%= f.label :user_id %><br>
<%= f.number_field :user_id %>
</div>
我应该更改哪些内容才能按名称而不是ID来选择用户?
答案 0 :(得分:1)
尝试使用选择助手而不是number_field
。
<%= f.collection_select(:user_id, @users, :id, :first_name) %>
在你的控制器中,你需要以下一行(或类似的东西):
@users = User.all
如果要显示每个用户的全名,则需要在user.rb中创建一个方法来连接名字和姓氏,如下所示:
def fullname
fullname = "#{last_name}, #{first_name}"
end
然后您的选择将使用方法名称,如下所示:
<%= f.collection_select(:user_id, @users, :id, :fullname) %>
您可能需要一些时间来阅读所有不同的form helpers。
答案 1 :(得分:0)
您正在寻找的功能称为collection_select
。 http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select
f.collection_select :user_id, User.all, :id, :username