Link_to特定产品

时间:2016-02-16 08:20:52

标签: ruby-on-rails associations

Rails的新手,并尝试弄清楚如何设置link_to转到user的特定property。在我的情况下,property belongs_to useruser 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

3 个答案:

答案 0 :(得分:2)

问题在于您的链接有property_path(@user),其中@userUser而不是Property的实例。这就是为什么路线中的:id具有用户ID( 15 ),而不是属性( 18

使用nested resources

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