Rails ActiveRecord,用户ID获取数据表列表

时间:2019-06-04 10:58:18

标签: ruby-on-rails activerecord ruby-on-rails-5

不确定该问题是否明确,因为我正在尝试在该问题上找到正确的单词

我正在Rails Active Record上尝试获取用户拥有的数据列表。

当前页面显示为您可以看到的屏幕快照“ Ashford工具拥有的更多设备雇用 enter image description here

它应该显示5种不同的工具,但我似乎无法获得它,我能够获得显示中的所有数据,但无法获得工具的用户列表,似乎我错过了一两个小东西

这是我写的代码。

      <!-- More equipment from owner -->
  <div class="row">
    <h3>More equipment own by <strong><%= @tool.user.company %></strong></h3>
    <div class="col-md-2">
      <div class="panel panel-default">
        <div class="panel-heading preview">
          <%= image_tag @tool.images.first, class:"imgnear" if  @tool.images.attached? %>
        </div>
        <div class="panel-body">
          <%= link_to @tool.brand, target: :_blank %><br />
        </div>
      </div>
    </div>
  </div>

我尝试了“每个功能”,但一直出错

我已经做过current_user,但实际上还没有

<!-- More equipment from owner -->
  <div class="row">
    <h3>More equipment own by <strong><%= @tool.user.company %></strong></h3>
    <% current_user.tools.each do |tool| %>
    <div class="col-md-2">
      <div class="panel panel-default">
        <div class="panel-heading preview">
          <%= image_tag tool.images.first, class:"imgnear" if  tool.images.attached? %>
        </div>
        <div class="panel-body">
          <%= link_to tool.brand, tool, target: :_blank %><br />

        </div>
      </div>
    </div>
    <% end %>
  </div>

在工具控制器中

  def index
    @tools = current_user.tools

  end

  def new
    @tool = current_user.tools.build
  end

1 个答案:

答案 0 :(得分:1)

我相信您在该屏幕上显示的是ToolsController#show操作,而不是ToolsController#index操作。您的show方法可能如下所示:

def show
  @tool = Tool.find(params[:id])
end

或类似地

为了显示其他工具,您需要将它们分配给同一控制器动作内的某个变量。您可以做的是:

def show
  @tool = Tool.find(params[:id]) # or however that line looks
  @other_tools = @tool.user.tools.where("id != ?", @tool.id)
end

通过这种方式,@other_tools将包含属于所选工具所有者的所有工具,但将排除所选工具(否则,在“还拥有者”内部,您可以看到与列表)

另一件事,当您在视图中执行current_user.tools时,将按登录用户(而非拥有主要显示工具的用户)显示项目所有者,如果您登录,则可能看不到错误以所有者身份登录,但如果以其他用户身份登录,则应该看到列表显示了错误的工具。