Rails:使用ajax和jquery的if语句问题

时间:2013-08-16 14:37:28

标签: ruby-on-rails ajax ruby-on-rails-3 jquery

我发布了新的“推文”,并使用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)%>')

3 个答案:

答案 0 :(得分:2)

如果current_user是当前登录用户的用户对象,并且您的用户与您的推文相关联。要验证所有权,我建议:

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

<强>编辑:

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

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

答案 1 :(得分:1)

不在电脑上,但请尝试:if current_user == @user

答案 2 :(得分:0)

尝试在控制器操作上将current_user设置为某个实例变量:

@current = current_user

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