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



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

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

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

我只需要知道一种方法,仅根据我正在查看的个人资料而不是当前用户来查看帖子。谢谢!

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

首先,在视图中对数据库进行查询是非常糟糕的。请将<%= User.find_by_username(params[:id]).username %>内的表达式移动到控制器,然后使用实例变量显示用户名。

如果您也提供控制器代码,那就太好了。我想你应该根据你通过 params[:id] 找到的用户来选择用户事件。

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

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

因此,如果您想主要保持代码原样,则需要首先找到要获取事件的用户,然后获取该特定用户的状态

提供有关数据库架构的一些信息也会有所帮助

最新更新