我创建了一个rails关联"用户有很多关注"目前有用户的关注者和关注者列表。我想在users#show
上有2个链接来显示关注者和关注列表。我知道我可以使用follows#index
语句在我的if else
中呈现两种不同的观点,但我不确定如何处理它。我最初的想法是让轨道检查点击了哪个链接('关注者'或者'关注')但我无法找到确切的答案。我还想过创建两个不同的表(Followers,Followings),但为1个动作添加2个相同的值似乎是多余的,浪费了空间。
这是我的FollowsController:
class FollowsController < ApplicationController
def index
@follows = Follow.all
render :index
end
def create
@follow = Follow.create(follow_params)
redirect_to user_url(@follow.user_id)
end
def destroy
@follow = Follow.find(params[:id])
@follower_id = @follow.user_id
@follow.destroy!
redirect_to user_url(@follower_id)
end
private
def follow_params
params.require(:follow).permit(:follower_id, :user_id)
end
end
最好的方法是什么?
答案 0 :(得分:3)
示例:
def index
@follows = Follow.all
if @follows.present?
render 'show_with_followers'
else
render 'show_without_followings'
end
end
<强>视图强>
app/views/follows/_show_with_followers.html.erb
app/views/follows/_show_without_followings.html.erb
答案 1 :(得分:1)
这是我到目前为止找到的答案。我将在我看来使用
<%= link_to 'Followers', follows_path(:follows => 'followers') %>
<%= link_to 'Followings', follows_path(:follows => 'followings') %>
并使用
def index
if params["follows"] == 'followers'
#render followers
else
#render followings
end
end
end