根据user_id(索引视图)显示curent用户的成员

时间:2016-05-31 01:35:01

标签: ruby-on-rails ruby controller

我有一个user_id列。而不是呼叫所有成员我如何根据当前用户和user_id调用成员?

这是我的控制器,我尝试将.all更改为user_id或current_user.id以及基于示例的许多变体。仍然无法得到它。我也没有模特(使用authrocket)。 create动作也可以工作并插入user_id,我在底部有一个def current_user。

class Members::MainsController < ApplicationController

    # Member Profile List
    def index
        @members_mains.user_id = current_user.id
        @members_mains = Members::Main.all
    end

    private

    # Common Callbacks
    def set_members_main
        @members_main = Members::Main.find(params[:id])
    end

    # White List
    def members_main_params
        params.require(:members_main).permit(:mfirstname, :mlastname, :mtitle, :memail, :mphone, :mnotes, :smfacebook, :smtwitter, :smlinkedin, :user_id)
    end

end

2 个答案:

答案 0 :(得分:1)

如果我做对了,你的索引动作应该是这样的:

# Member Profile List
def index
  @current_member = Members::Main.find(current_user.id)
end

答案 1 :(得分:0)

您是否打算显示所有会员的个人资料列表?

如果没有,您的index操作可以简单地删除。如果是这样,那么您根本不会对user_id进行过滤,您可以删除该行。

要加载特定user_id的成员个人资料,请尝试show这样的操作: def show @members_main = Members::Main.find_by(user_id: params[:id]) end

这将根据URL中的:id加载成员个人资料。

如果您只想显示当前用户自己的个人资料,请使用current_user.id,它会为您提供AuthRocket用户的ID。 def show @members_main = Members::Main.find_by(user_id: current_user.id) end

在任何一种情况下,您都可能需要从:show回调中移除set_members_main

最后,您可能希望从:user_id中删除members_main_params,以便用户无法修改AuthRocket user_id。您只想直接控制它(就像您在create操作中一样)。

希望这一点非常明确,可以让您继续前行,但我可能会根据您实际打算用于indexshow的功能而稍微偏离。