Ruby on rails Rails 4如何让页面显示用户';狗的名单

Ruby on rails Rails 4如何让页面显示用户';狗的名单,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我一直在练习这个rails应用程序,我想让注册用户上传他们的狗的个人资料。但是我就是不能让我的狗页面显示只属于当前登录用户的狗 我已经通过活动记录链接了狗和用户模型(用户有很多:狗,狗属于:用户),但我不知道在我的dogmenu视图中键入什么来只显示属于当前登录用户的狗。这就是我到目前为止所做的: views\access\dogmenu.html.erb我建议您在控制器操作中为当前用户的狗设置一个实例变量。大概是这样的: def dogmenu # this assumes you hav

我一直在练习这个rails应用程序,我想让注册用户上传他们的狗的个人资料。但是我就是不能让我的狗页面显示只属于当前登录用户的狗

我已经通过活动记录链接了狗和用户模型(用户有很多:狗,狗属于:用户),但我不知道在我的dogmenu视图中键入什么来只显示属于当前登录用户的狗。这就是我到目前为止所做的:


views\access\dogmenu.html.erb我建议您在控制器操作中为当前用户的狗设置一个实例变量。大概是这样的:

def dogmenu
  # this assumes you have a current_user already defined
  @dogs = current_user.dogs
end
然后切换视图以使用实例变量
@dogs

<div id="dogdisplay">
  <table>
<tr>
  <th>Dog Name</th>
  <th>Breed</th>
</tr>
<% @dogs.each do |d| %>
<tr>
  <td><%= link_to d.dname, d %></td>
  <td><%= d.breed %></td>
  <td><%= link_to "Edit", edit_dog_path(d) %></td>
  <td><%= link_to "Delete", d, method: :delete %></td>
</tr>
<% end %>
</table>
</div>

狗名
繁殖

我建议您在控制器操作中为当前用户的狗设置一个实例变量。大概是这样的:

def dogmenu
  # this assumes you have a current_user already defined
  @dogs = current_user.dogs
end
然后切换视图以使用实例变量
@dogs

<div id="dogdisplay">
  <table>
<tr>
  <th>Dog Name</th>
  <th>Breed</th>
</tr>
<% @dogs.each do |d| %>
<tr>
  <td><%= link_to d.dname, d %></td>
  <td><%= d.breed %></td>
  <td><%= link_to "Edit", edit_dog_path(d) %></td>
  <td><%= link_to "Delete", d, method: :delete %></td>
</tr>
<% end %>
</table>
</div>

狗名
繁殖

我建议您在控制器操作中为当前用户的狗设置一个实例变量。大概是这样的:

def dogmenu
  # this assumes you have a current_user already defined
  @dogs = current_user.dogs
end
然后切换视图以使用实例变量
@dogs

<div id="dogdisplay">
  <table>
<tr>
  <th>Dog Name</th>
  <th>Breed</th>
</tr>
<% @dogs.each do |d| %>
<tr>
  <td><%= link_to d.dname, d %></td>
  <td><%= d.breed %></td>
  <td><%= link_to "Edit", edit_dog_path(d) %></td>
  <td><%= link_to "Delete", d, method: :delete %></td>
</tr>
<% end %>
</table>
</div>

狗名
繁殖

我建议您在控制器操作中为当前用户的狗设置一个实例变量。大概是这样的:

def dogmenu
  # this assumes you have a current_user already defined
  @dogs = current_user.dogs
end
然后切换视图以使用实例变量
@dogs

<div id="dogdisplay">
  <table>
<tr>
  <th>Dog Name</th>
  <th>Breed</th>
</tr>
<% @dogs.each do |d| %>
<tr>
  <td><%= link_to d.dname, d %></td>
  <td><%= d.breed %></td>
  <td><%= link_to "Edit", edit_dog_path(d) %></td>
  <td><%= link_to "Delete", d, method: :delete %></td>
</tr>
<% end %>
</table>
</div>

狗名
繁殖

要获取当前用户的狗,您可以使用object
current\u user
改变这个 控制器

def dogmenu
  @dogs = current_user.dogs
end
看法


要使当前用户可以在视图中执行,请放置一个helper方法

class ApplicationController < ActionController::Base
  helper_method :current_user

  def current_user
    @current_user ||= User.find_by_id(session[:user])
  end
end
class ApplicationController
最后,您可以在视图或帮助器中使用当前用户

<% current_user.dogs.each do |d| %>
<tr>
  <td><%= link_to d.dname, d %></td>
  <td><%= d.breed %></td>
  <td><%= link_to "Edit", edit_dog_path(d) %></td>
  <td><%= link_to "Delete", d, method: :delete %></td>
</tr>
<% end %>


这对于尝试第一个使用实例变量的方法是很好的。希望它能有所帮助。

要获得当前用户的狗,您可以使用object
current\u user
改变这个 控制器

def dogmenu
  @dogs = current_user.dogs
end
看法


要使当前用户可以在视图中执行,请放置一个helper方法

class ApplicationController < ActionController::Base
  helper_method :current_user

  def current_user
    @current_user ||= User.find_by_id(session[:user])
  end
end
class ApplicationController
最后,您可以在视图或帮助器中使用当前用户

<% current_user.dogs.each do |d| %>
<tr>
  <td><%= link_to d.dname, d %></td>
  <td><%= d.breed %></td>
  <td><%= link_to "Edit", edit_dog_path(d) %></td>
  <td><%= link_to "Delete", d, method: :delete %></td>
</tr>
<% end %>


这对于尝试第一个使用实例变量的方法是很好的。希望它能有所帮助。

要获得当前用户的狗,您可以使用object
current\u user
改变这个 控制器

def dogmenu
  @dogs = current_user.dogs
end
看法


要使当前用户可以在视图中执行,请放置一个helper方法

class ApplicationController < ActionController::Base
  helper_method :current_user

  def current_user
    @current_user ||= User.find_by_id(session[:user])
  end
end
class ApplicationController
最后,您可以在视图或帮助器中使用当前用户

<% current_user.dogs.each do |d| %>
<tr>
  <td><%= link_to d.dname, d %></td>
  <td><%= d.breed %></td>
  <td><%= link_to "Edit", edit_dog_path(d) %></td>
  <td><%= link_to "Delete", d, method: :delete %></td>
</tr>
<% end %>


这对于尝试第一个使用实例变量的方法是很好的。希望它能有所帮助。

要获得当前用户的狗,您可以使用object
current\u user
改变这个 控制器

def dogmenu
  @dogs = current_user.dogs
end
看法


要使当前用户可以在视图中执行,请放置一个helper方法

class ApplicationController < ActionController::Base
  helper_method :current_user

  def current_user
    @current_user ||= User.find_by_id(session[:user])
  end
end
class ApplicationController
最后,您可以在视图或帮助器中使用当前用户

<% current_user.dogs.each do |d| %>
<tr>
  <td><%= link_to d.dname, d %></td>
  <td><%= d.breed %></td>
  <td><%= link_to "Edit", edit_dog_path(d) %></td>
  <td><%= link_to "Delete", d, method: :delete %></td>
</tr>
<% end %>


这对于尝试第一个使用实例变量的方法是很好的。希望它能有所帮助。

您需要两件事来完成这项工作:

  • 已登录用户的用户对象
  • 根据该id筛选狗列表
  • 1.当前用户 这是非常简单的,你应该可以通过谷歌搜索找到这个。最大的问题是你是否已经实现了自己的用户管理,或者你正在使用类似Desive的东西来管理它

    如果是,请看一看

    如果您自己编写,您可以看看Desive或其他用户管理gem如何提供对当前用户对象的访问。我将把这个问题留给你,因为这似乎超出了你的问题范围

    2.过滤狗名单 这很简单,您有几个选择:

    从视图 从控制器 @Sean Huber建议的是更干净-使用我上面的任何方法,但从控制器。例如

    @dogs = current_user.dogs
    

    简而言之,只带上用户id与当前用户id匹配的狗

    你需要两件事来完成这项工作:

  • 已登录用户的用户对象
  • 根据该id筛选狗列表
  • 1.当前用户 这是非常简单的,你应该可以通过谷歌搜索找到这个。最大的问题是你是否已经实现了自己的用户管理,或者你正在使用类似Desive的东西来管理它

    如果是,请看一看

    如果您自己编写,您可以看看Desive或其他用户管理gem如何提供对当前用户对象的访问。我将把这个问题留给你,因为这似乎超出了你的问题范围

    2.过滤狗名单 这很简单,您有几个选择:

    从视图 从控制器 @Sean Huber建议的是更干净-使用我上面的任何方法,但从控制器。例如

    @dogs = current_user.dogs
    

    简而言之,只带上用户id与当前用户id匹配的狗

    你需要两件事来完成这项工作:

  • 已登录用户的用户对象
  • 根据该id筛选狗列表
  • 1.当前用户 这个