我希望在用户展示页面上创建一个链接,当点击该链接时,会显示用户发布的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 %>
当然,它在用户显示页面上失败了。我如何使这项工作?
答案 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:应该这样做。