【发布时间】:2016-10-19 02:14:35
【问题描述】:
我是 Rails 新手,正在学习 Hartl 的教程,但有时我想在代码中添加一些特别的东西。我现在正在做微博,我想添加“删除”功能来删除微博,但我希望这个功能只对管理员和创建这个微博的用户可见。现在我不知道该怎么做,因为当我想设置<% if current_user(micropost.user) && user.admin %> 时,我得到一个错误wrong number of arguments (given 1, expected 0)。
在session_helper.rb 我有函数def current_user 而不是def current_user(micropost.user) 我知道但是我可以以某种方式添加这个micropost.user 并完成这个吗?波纹管所有代码:
app/views/microposts/_micropost.html.erb
<li id="micropost-<%= micropost.id %>">
<%= link_to gravatar_for(micropost.user, size: 50), micropost.user %>
<span class="user"><%= link_to micropost.user.name, micropost.user %></span>
<span class="content"><%= micropost.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
<% if current_user(micropost.user) && user.admin %>
<%= link_to "delete", micropost, method: :delete,
data: { confirm: "You sure?" } %>
<% end %>
</li>
app/helpers/session_helper.html.erb
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(:remember, cookies[:remember_token])
log_in user
@current_user = user
end
end
end
【问题讨论】:
标签: ruby-on-rails ruby