Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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 使用Desive创建“用户”显示页面_Ruby On Rails_Devise_Show - Fatal编程技术网

Ruby on rails 使用Desive创建“用户”显示页面

Ruby on rails 使用Desive创建“用户”显示页面,ruby-on-rails,devise,show,Ruby On Rails,Devise,Show,我试图创建一个用户show页面(该页面将用作配置文件页面),但对于如何使用Desive实现这一点,我感到困惑。似乎Deave没有任何类型的show定义-我有没有办法访问Deave正在实现的控制器以制作一个,或者我必须覆盖它们 您可以生成Desive使用的视图,因此可以根据需要对其进行更改 rails g devise:views 您应该生成一个继承自application\u controller的users\u controller,并在其中定义自定义show方法。不要忘记为它创建视图和路

我试图创建一个用户
show
页面(该页面将用作配置文件页面),但对于如何使用Desive实现这一点,我感到困惑。似乎Deave没有任何类型的
show
定义-我有没有办法访问Deave正在实现的控制器以制作一个,或者我必须覆盖它们

您可以生成Desive使用的视图,因此可以根据需要对其进行更改

 rails g devise:views

您应该生成一个继承自
application\u controller
users\u controller
,并在其中定义自定义
show
方法。不要忘记为它创建视图和路线。 例:

#用户_controller.rb
def秀
@user=user.find(参数[:id])
结束
#在你看来
#routes.rb
匹配“users/:id”=>“users#show”,通过::get
#或
获取“users/:id”=>“users#show”
#或
资源:用户,仅限:[:显示]

别忘了,您的用户路线应该位于用户路线的“设计”下方,如下所示:

#routes.rb
devise_for :users
resources :users, :only => [:show]
此外,如果您使用用户名或电子邮件作为主键,而不是通常的id,则应通过以下方式声明路由来避免路由冲突:

#routes.rb
devise_for :users, :path_prefix => 'd'
resources :users, :only => [:show]

使用设备显示当前用户/其他用户配置文件:

安装装置后

创建用户控制器:

rails generate controller Users
def index @users = User.all end
然后创建一个show操作并查找具有参数id的用户:

def show
@user = User.find(params[:id])
end
在用户视图文件夹中创建show.html.erb文件:

<%= @user.email %>
在用户视图文件夹中创建index.html.erb,然后:

<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>

这方面的链接将是:

<%= link_to "show_index_of_users", users_path %>

这会将您链接到users index.html.erb文件,您将在其中创建一个循环并链接到用户配置文件:

<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>


这应该管用

但是仍然没有用户的显示页面。仅新建和编辑页面。回答不好,请先阅读问题,似乎oyu在
rails g designe:views
生成新建和编辑视图之前没有使用designe。没有显示页面。尝试代码并查看您的路线,没有显示。所以我已经完成了所有这些,我只是将
show
更改为
index
,这使得它成为
@users=users。所有
但是我得到了以下错误:未初始化常量users controller::users。找到我的错误,应该是
@users=@User.all
一旦我这样做,我如何链接到特定的用户配置文件并使其在未登录的情况下打开/访问?谢谢上述代码将使用户显示(配置文件)页面无需登录即可访问当我这样做时,我将无法访问
登录
page@JeremyThomas您的路由中是否有
design_:users
?不需要配置/routes?是-需要按照已接受的答案中的说明配置路由。资源:用户,仅限:[:显示]
<%= link_to "show_index_of_users", users_path %>
<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>