Rails的新手,并尝试弄清楚如何设置link_to
转到user
的特定property
。在我的情况下,property
belongs_to
user
和user
has_many
properties
。我使用Devise和CanCan。只需要将当前user
重定向到他们的property
。
现在问题是它尝试重定向到与property_id
相同的user_id
。 (例如,用户/ 15尝试重定向到' property / 15'即使我检查控制台时 - 让我们说用户的属性是属性/ 18 - 它有一个{ {1}}为15 - 因此创建了一个关联正确的关联)只是无法弄清楚如何让user_id
转到属性18(示例)而不是15。 / p>
感谢任何帮助!
用户/显示
link_to
控制器/用户
<div class="col-mds-6">
<%= link_to "View Property", property_path(@user), :class => "btn btn-primary btn-lg btn-custom" %>
</div>
路线:
class UsersController < ApplicationController
before_action :authenticate_user!
load_and_authorize_resource
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
答案 0 :(得分:2)
问题在于您的链接有property_path(@user)
,其中@user
是User
而不是Property
的实例。这就是为什么路线中的:id
具有用户ID( 15 ),而不是属性( 18 )
resources :users do
resources :properties
end
#users/show.html.erb
<% @user.properties.each do | property | %>
<%= link_to "View Property", user_property_path(@user, property), :class => "btn btn-primary btn-lg btn-custom" %>
<% end %>
答案 1 :(得分:1)
current user
被重定向到property
您需要使用以下内容:
#app/controllers/properties_controller.rb
class PropertiesController < ApplicationController
def show
@user = current_user.properties.find params[:id]
end
end
#app/views/users/show.html.erb
<% @user.properties.each do |property| %>
<%= link_to property.name, property %>
<% end %>
答案 2 :(得分:0)
路线:
resources :users do
resources :properties
end
用户/显示
<div class="col-mds-6">
<%= link_to "View Property", user_property_path(@user, property), :class => "btn btn-primary btn-lg btn-custom" %>
</div>
控制器
class PropertiesController < ApplicationController
before_action :authenticate_user!
load_and_authorize_resource
def show
@user = User.find(params[:id])
@property = Property.find(params[:property_id])
end
end