此代码在页面呈现期间抛出错误,因为它没有找到此链接的路径:
<li class="link">
<%=link_to "Save current options to a cluster", division_clusters_path(@current_dvision, courses: @cluster_courses ), :method => :post unless @cluster_courses.empty? %>
</li>
它工作在一个较旧的3.2副本,但升级到3.2.4后,它开始抛出一个错误,因为它只在一个POST路由存在时寻找一个GET路由(它意味着转向标准的创建方法)。
我将它从link_to切换到了button_to,并试图从HTML选项中明确地挖出URL选项以防止出现歧义,但我仍在搞砸。
我假设如果button_to是轰炸,我正在做一些令人难以置信的错误。我只是不确定是什么。
答案 0 :(得分:2)
它回到GET请求的事实表明:method => :post
没有进入options参数:
# File actionpack/lib/action_view/helpers/url_helper.rb, line 231
def link_to(*args, &block)
if block_given?
options = args.first || {}
html_options = args.second
link_to(capture(&block), options, html_options)
else
name = args[0]
options = args[1] || {}
html_options = args[2]
.....
end
end
由于unless
运算符的优先级大于方法调用,因此division_clusters_path(@current_dvision, courses: @cluster_courses )
作为可能的罪魁祸首。如果那是返回被args [1]吞噬的东西,那么args [2]将得到其余的选项(这是为了args [1])。顺便说一下,看起来有一个拼写错误:@current_dvision
。