Ruby on rails 如何将2个参数添加到1个函数中?
我是Rails新手,我正在做Hartl的教程,但有时我想在代码中添加一些特别的东西。我现在正在做micropost,我想添加“删除”功能来删除micropost,但我希望此功能仅对管理员和制作此micropost的用户可见。现在我不知道该怎么做,因为当我想设置Ruby on rails 如何将2个参数添加到1个函数中?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是Rails新手,我正在做Hartl的教程,但有时我想在代码中添加一些特别的东西。我现在正在做micropost,我想添加“删除”功能来删除micropost,但我希望此功能仅对管理员和制作此micropost的用户可见。现在我不知道该怎么做,因为当我想设置时,我得到了一个错误错误的参数数(给定1,预期为0)。 在session\u helper.rb中,我有函数def current\u usernotdef current\u user(micropost.user)我知道,但是我可以添加
时,我得到了一个错误错误的参数数(给定1,预期为0)
。
在session\u helper.rb
中,我有函数def current\u user
notdef current\u user(micropost.user)
我知道,但是我可以添加这个micropost.user并完成吗?下面是所有代码:
app/views/micropost/_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>
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
如果当前用户==microspost.user,您只需检查
。没有理由向当前用户添加参数,这样做会使该方法的目的不那么明显。方法current\u user(something)
绝不意味着当前用户和参数之间的相等检查,并且违反了相当常见的Rails实践,即定义一个名为current\u user
的方法来返回当前经过身份验证的用户
如果要定义检查给定用户是否为当前用户的附加方法,应使用current\u user?(user)
。它会像这样使用
<% if current_user?(micropost.user) && user.admin %>
如果当前用户==microspost.user
,您只需检查。没有理由向当前用户添加参数,这样做会使该方法的目的不那么明显。方法current\u user(something)
绝不意味着当前用户和参数之间的相等检查,并且违反了相当常见的Rails实践,即定义一个名为current\u user
的方法来返回当前经过身份验证的用户
如果要定义检查给定用户是否为当前用户的附加方法,应使用current\u user?(user)
。它会像这样使用
<% if current_user?(micropost.user) && user.admin %>
meagar是正确的,您不应该向该方法添加参数。但要考虑参数,您需要做的就是将def行更改为类似的内容,然后只需在您想调用它的地方引用user
参数,这同样是个坏主意,但您是成年人
def current_user(user)
meagar是正确的,您不应该向该方法添加参数。但要考虑参数,您需要做的就是将def行更改为类似的内容,然后只需在您想调用它的地方引用user
参数,这同样是个坏主意,但您是成年人
def current_user(user)
太简单了,我没想到。谢谢顺便说一句,你有什么建议我如何定义管理员的功能以及?当我以管理员的身份点击删除按钮时,我被重定向到root_url而没有删除帖子…他妈的太容易了,我根本没想过。谢谢顺便说一句,你有什么建议我如何定义管理员的功能以及?当我以管理员身份单击“删除”按钮时,我会被重定向到根目录url,而不会删除帖子。。。