收集并显示属于用户的对象

时间:2014-11-08 00:44:10

标签: ruby-on-rails ruby

我希望在用户展示页面上创建一个链接,当点击该链接时,会显示用户发布的Pics集合。我不确定我是否正在朝这个方向迈进。

user_controller.rb(正是需要的)

  def show
    @user = User.find(params[:id])
    @user_collection = Pic.all.collect { |a| a.user_id }
  end

show.html.erb(再次,只是重要部分)

Pics Posted: <%= link_to @user.pics.count, @users_collection %>

当然,它在用户显示页面上失败了。我如何使这项工作?

1 个答案:

答案 0 :(得分:1)

根据您构建模型的方式,可能有很多方法可以实现。您的pic模型中是否包含user_id列?在这种情况下,您可以通过以下方式从一个用户获取所有照片:

首先在控制器中:

def show
  @user = User.find(params[:id])
  @pics = Pic.where(user_id: @user.id)

  respond_to do |format|
    format.html
    format.js
  end
end

def show_pics
  @user = User.find(params[:user_params])
  @pics = Pic.where(user_id: @user.id)
end

查看:

<%= link_to :controller => "users", :action => 'show_pics' , :user_params => @user.id, :remote => true do %>
  <%= @pics.count %>
<% end %>
<div id="ajax-pics"></div>

然后在观看次数/用户中创建 users / _pics.html.erb

<% @pics.each do |pic| %>
  <%= pic %>
<% end %>

然后在观看/用户中创建 users / show_pics.js.erb

$("#ajax-pics").html("<%= escape_javascript(render('users/pics')) %>");

最后在routes.rb

get "/show_pics" => "users#show_pics"

//编辑:哦,亲爱的,你需要一个链接?然后你需要一些AJAX。等一下我会更新我的答案。

//编辑2:应该这样做。