Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 选择标签登录_Ruby On Rails_Sqlite_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 选择标签登录

Ruby on rails 选择标签登录,ruby-on-rails,sqlite,ruby-on-rails-4,Ruby On Rails,Sqlite,Ruby On Rails 4,我想有一个下拉菜单,其中列出数据库中的所有用户名。从那里,我希望用户选择他/她的名字,并能够点击登录,并被带到各自的页面。此时,不需要密码。目前,我有以下几点: 控制器: def login @user = User.new @users = User.all # @user = User.find_by_id(:id) # redirect_to user_path(@user) end 视图: 我似乎无法将用户链接到他们的路径,而且我想在下拉菜单中显示用户名。目前,它显示

我想有一个下拉菜单,其中列出数据库中的所有用户名。从那里,我希望用户选择他/她的名字,并能够点击登录,并被带到各自的页面。此时,不需要密码。目前,我有以下几点:

控制器:

def login
  @user = User.new
  @users = User.all

  # @user = User.find_by_id(:id)
  # redirect_to user_path(@user)
end
视图:

我似乎无法将用户链接到他们的路径,而且我想在下拉菜单中显示用户名。目前,它显示一个十六进制指针


提前谢谢。

您不应该在这里创建新的用户对象:您只需要从数据库中加载一个。您想在控制器中做的只是将当前用户设置为现有用户之一,对吗

此外,您还将表单提交回加载表单的操作,这看起来很奇怪。我会让它提交给一个新的动作,比如设置当前用户,这是一个后期动作

在登录模板中:

<%= form_tag '/set_current_user' do %>
  <%= f.label "Name" %>
  <br/>
    <%= select_tag "user_id", options_for_select(@users.collect{|user| [user.name, user.id] } %>
  <br/>
  <br/>
  <%= submit_tag 'Login' %>
<% end %>
您最初的方法让人想起这类事情通常是如何处理的,其中您确实有一个表单,但它是针对UserSession对象而不是用户对象的。

选择带有do的标签?我从来没见过。
<%= form_tag '/set_current_user' do %>
  <%= f.label "Name" %>
  <br/>
    <%= select_tag "user_id", options_for_select(@users.collect{|user| [user.name, user.id] } %>
  <br/>
  <br/>
  <%= submit_tag 'Login' %>
<% end %>
def set_current_user
  session[:user_id] = params[:user_id]
  redirect_to "/" and return
end