Rails两个视图与一个控制器#动作

时间:2015-12-09 19:02:25

标签: ruby-on-rails ruby

我创建了一个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

最好的方法是什么?

2 个答案:

答案 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