我已经使用make_flaggable gem为微博添加了标记。一切都在我的应用程序中工作,直到添加microposts_helper.rb
错误 - views / microposts / _micropost.html.erb中错误的参数数量(2为1)
def toggle_support_button(micropost,user)
***if user.flagged?(micropost, :support)***
# We already like this
link_to "Not Support", support_micropost_path(micropost)
else
_micropost.html.erb
<% if current_user.present? %>
<%= toggle_support_button(micropost,current_user) %>
<%end%>
microposts_helper.rb
module MicropostsHelper
def toggle_support_button(micropost,user)
if user.flagged?(micropost, :support)
# We already like this
link_to "Not Support", support_micropost_path(micropost)
else
# We don't like this yet
link_to "Support", support_micropost_path(micropost)
end
end
end
microposts_controller.rb
def support
@micropost = Micropost.find(params[:id])
if current_user.flagged?(micropost, :support)
# We already like this
@current_user.unflag(@micropost, :support)
else
# We don't like this yet
@current_user.flag(@micropost, :support)
end
redirect_to request.referrer
end
答案 0 :(得分:1)
所以现在我清楚地知道发生了什么。您正在直接从github使用gem make_flaggable 。 (这本身可能不是一个好主意。另一方面 - 一个published版本为0.0.3 - 这是一个正在进行的工作的指示。)你可能已经阅读了那里的文档确实是flagged?(article, flag_name)
方法。但是 - 如果您查看the code - 您会发现它只接受一个参数。所以你的问题是这个不成熟的宝石在其文档和它的实现之间存在不匹配。
现在该怎么办?您可以调查是否可以使用one参数方法。我想这取决于你是否需要为同一个用户和项目使用不同的标志。否则,您可以随时分配回购并进行所需的更改。由于它在文档中,原作者可能会接受对此功能的拉取请求。
旁注。知道您下载的所有宝石的源代码都可以在硬盘上随时使用,这可能很有用。只需运行gem which make_flaggable
即可找到它。