0

我正在发布新的“推文”,使用 jquery 和 ajax,我可以在不刷新页面的情况下显示新发布的推文。但是在我的视图模板中,我有一个if statement检查它是否是的current_user,如果是,则显示删除按钮。

但是 Ajax 不读取if statement并且不显示删除按钮。如果我刷新页面或删除 if 语句,则会显示删除按钮。这违背了目的,因为该按钮也显示在其他用户的个人资料中。

这是我的看法:

<ul class="tweets>
<li>
    <span><%= tweet.content %></span><br>
    <% if current_user?(@user)%>
        <%= link_to "Delete" tweet, method: :delete, data: { confirm: "You sure?" } %>
    <%end%>
</li>
</ul>

我的 create.js.erb:$('.tweets').prepend('<%= j render(@tweet)%>')

4

3 回答 3

2

Ifcurrent_user是当前登录用户的用户对象,并且您有一个与您的推文关联的用户。为了验证所有权,我建议:

    <% if current_user.id == tweet.user.id %>

编辑:

执行上述操作将需要 rails 执行附加数据库查询以获取tweet.user用户数据。将其更改为以下内容将消除额外的查询:

    <% if current_user.id == tweet.user_id %>
于 2013-08-16T15:09:16.337 回答
1

不是在电脑上,而是尝试:if current_user == @user

于 2013-08-16T15:00:41.407 回答
0

尝试current_user在控制器操作上设置一些实例变量:

@current = current_user

我相信您在那里无权访问此变量,但您确实可以访问您在从控制器返回响应之前设置的所有实例变量。

于 2013-08-16T14:42:55.770 回答