当前用户信息显示在所有配置文件Ruby on Rails上

时间:2017-07-31 03:41:19

标签: ruby-on-rails ruby

所以我正在创建一个社交媒体网站,用户可以在其中加入活动并互相竞争。

每次用户加入活动时,其个人资料中都会显示一个状态。问题在于,当我查看其他用户配置文件时,状态只匹配当前用户的身份。

如果有人可以帮我写一些代码,这些代码会显示每个用户的不同状态。我知道这个问题可能听起来有些模糊。

我只需要知道一种方法,只根据我正在查看的配置文件而不是当前用户查看帖子。谢谢!

<div class="center">
  <div class="col-xs-6">
    <div class="panel panel-default">
      <div class="panel-body">
        <% if !@user_events.present? %>
          <h4>Hi <%= User.find_by_username(params[:id]).username %>, thanks for joining!</h4>
          <h4>Join events, complete them, and compete</h4>
        <% end %>

        <% @user_events.each do |ue|%>
          <% if ue.event.present? %>
            <h4 class="blue">
              <%= User.find_by_username(params[:id]).username %>
            </h4>
            <% userevent = User.find_by(params[:event]) %>
            <p>I'm going to <%= link_to ue.event.title %>.</p>
            <% if ue.hours.present? %>
              <h5> Completed Hours: <%= ue.hours %>   </h5>
            <% end %>
            <% if ue.hours.present? %>
              <img src="#" style="width: 10%;" alt="">
            <% end %>
          <% end %>
        <% end %>
      </div>
    </div>
  </div>
</div>

2 个答案:

答案 0 :(得分:0)

首先,对视图内的数据库进行查询非常糟糕。请将 print Response(obj_serialized.data) return Response(obj_serialized.data) 内的表达式移动到您的控制器,然后使用实例变量来显示用户名。

如果您提供控制器代码也会很棒。我想你应该根据params [:id]找到的用户选择用户事件。

答案 1 :(得分:0)

没有控制器,它有点难以帮助。但我建议在用户控制器上尝试一些东西,比如

def get_status_by_user
  user_id = params[:user_id]
  user = User.find_by(id: user_id)
  user.event
end

其中params[user_id]是您希望获得该事件的用户的ID。

另外我可以看到<% userevent = User.find_by(params[:event]) %>您没有指定用户,因此该方法将返回最后一个

  

查找符合指定条件的第一条记录。

Find_by docuemntaion

因此,如果您希望保持代码大部分时间,您需要首先找到要获取事件的用户,然后获取该特定用户的状态

还提供有关数据库架构的一些信息可以提供帮助