因此,我正在制作一个社交媒体网站,在那里用户可以加入活动并相互竞争。
每次用户加入活动时,他的个人资料上都会显示一个状态。问题是,当我查看其他用户配置文件时,状态正好与当前用户的身份相匹配。
如果有人能帮我写一些代码,为每个用户显示不同的状态,那就太好了。我知道这个问题听起来有点模糊。
我只需要知道一种方法来查看帖子只基于我正在查看的个人资料,而不是当前用户。谢谢!
<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>发布于 2017-07-31 16:48:03
首先,在视图中查询数据库是非常糟糕的。请将<%= User.find_by_username(params[:id]).username %>中的表达式移到您的控制器中,然后使用实例变量显示用户名。
如果你也提供你的控制器代码,那就太好了。我想你应该根据你通过params:id找到的用户来选择用户事件。
发布于 2017-08-01 22:00:00
没有控制器,就很难帮上忙了。但是我建议在用户控制器上尝试一些东西,比如
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
因此,如果您希望保持代码的大部分内容不变,则需要首先找到想要获取事件的用户,然后获取该特定用户的状态
另外,提供一些关于DB模式的信息可能会有所帮助
https://stackoverflow.com/questions/45407145
复制相似问题