Ruby on rails 为什么在部分中使用link_to时会返回到父对象而不是实际对象的链接?

Ruby on rails 为什么在部分中使用link_to时会返回到父对象而不是实际对象的链接?,ruby-on-rails,partial-views,link-to,Ruby On Rails,Partial Views,Link To,所以我有两个模型,用户属于组织(有很多用户)。我使用一个partial来显示属于任何一个特定组织的所有用户,如果我只输出名称(它正确地命名了所有用户),这就可以正常工作。但是,当我更改部分代码以提供指向user.name的链接时,返回的链接是指向父组织的所有链接,而不是单个子对象的链接。我做错了什么 相关代码: 组织控制员 def show @organization = Organization.find(params[:id]) @users_index = User.joins(:orga

所以我有两个模型,用户属于组织(有很多用户)。我使用一个partial来显示属于任何一个特定组织的所有用户,如果我只输出名称(它正确地命名了所有用户),这就可以正常工作。但是,当我更改部分代码以提供指向user.name的链接时,返回的链接是指向父组织的所有链接,而不是单个子对象的链接。我做错了什么

相关代码:

组织控制员

def show
@organization = Organization.find(params[:id])
@users_index = User.joins(:organization).where(organizations: {id: @organization.id})
end
Organization.show.html.erb

<% provide(:title, @organization.organization_name) %>
<h1><%= @organization.organization_name %></h1>
<h2>Your Organization's Users:</h2>
<%= render partial: "users_index", collection: @users_index %>

您组织的用户:
_用户_index.html.erb代码:

<p class="users"><%= link_to users_index.name %></p>


如果您正确设置了关系,则可以使用:

@users\u index=@organization.users

然后你需要循环@users\u索引并将其传递给你的部分用户

@users_index.each do |user|
    <%= render "users_index", :user => user %>
end
@users_index.each do|user|
用户%>
结束
在您的部分中,更改为:

<p class="users"><%= link_to user.name, user %></p>

我认为这个问题的核心,正如另一个答案中提到的,是你的
链接到

<%= link_to users_index.name %>
我不知道你的应用程序在没有定义的情况下如何加载正确的链接路径,不管你是否将它添加到帮助器中

我假定渲染的链接将指向“#”,而不是您提到的“父对象”

--

修复

我会这样做:

#app/views/organization/show.html.erb
<%= render partial: "users_index", collection: @users_index, as: :user %>

#app/views/organization/_users_index.html.erb
<p class="users"><%= link_to user.name, user %></p>
这将允许您调用以下命令:

#app/controllers/organizations_controller.rb
Class OrganizationsController < ApplicationController
   def show
      @organization = Organization.find params[:id]
      @users_index = @organization.users
   end
end
#app/controllers/organizations_controller.rb
类组织控制器<应用程序控制器
def秀
@organization=organization.find参数[:id]
@users\u index=@organization.users
结束
结束

谢谢您的回复。在哪里设置@users\u index=@organization.users代码?在用户控制器中?我使用ActiveRecord查询是因为我只想检索属于当前/活动组织的用户。当我尝试你的代码时,它抛出了一个错误,在我的例子中,没有为类(由主键标识的组织)定义“user”方法。完美-这正是我所希望的。非常感谢你的帮助。谢谢里奇。我之所以使用更笨拙的代码,是因为我在项目的另一部分中需要它(以确保此处仅显示当前组织的用户)。这个更新也很有效,所以谢谢你的帮助。没问题-很高兴它有帮助
#app/models/user.rb
Class User < ActiveRecord::Base
   belongs_to :organization
end

#app/models/organization.rb
Class Organization < ActiveRecord::Base
   has_many :users
end
#app/controllers/organizations_controller.rb
Class OrganizationsController < ApplicationController
   def show
      @organization = Organization.find params[:id]
      @users_index = @organization.users
   end
end