【问题标题】:Show curent user's members based on user_id (Index View)根据用户 ID 显示当前用户成员(索引视图)
【发布时间】:2016-06-08 00:27:25
【问题描述】:

我有一个 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

【问题讨论】:

    标签: ruby-on-rails ruby controller


    【解决方案1】:

    如果我猜对了,您的索引操作应该是这样的:

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

    【讨论】:

    • 感谢您的帮助。
    【解决方案2】:

    您打算显示所有成员的个人资料列表吗?

    如果没有,您的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

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

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

    希望这足够清楚,可以让您顺利上路,但根据您实际打算为 indexshow 提供的功能,我可能会有点偏离。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多