我发布了新的“推文”,并使用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)%>')
答案 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
我相信您无法访问此变量,但您可以在从控制器返回响应之前访问您设置的所有实例变量。