我正在使用HAML助手来绘制菜单
module ApplicationHelper
def draw_menu
items = %w[
item1
item2
] # community
capture_haml do
haml_tag :nav, :class => "main-menu" do
haml_tag :ul do
items.each do |item|
css_class = nil
css_class = "first-item" unless item != items.first
css_class = "last-item" unless item != items.last
haml_tag :li, :class => css_class do
haml_concat link_to t("nav.#{item}")
end
end
end
end
haml_tag :div, :class => "clearize"
end
end
end我正在尝试测试它(我想要匹配预期的输出为/<nav class='main-menu'>\s*<\/nav><div class='clearize'><\/div>/)
我实际上做的是
require "spec_helper"
describe ApplicationHelper do
before(:all) do
init_haml_helpers
end
it "should draw a menu" do
draw_menu().should_not be_empty
end
end但是它不断地得到以下错误:
1) ApplicationHelper should draw a menu
Failure/Error: draw_menu().should_not be_empty
ActionController::RoutingError:
No route matches {}
# ./app/helpers/application_helper.rb:20:in `block (5 levels) in draw_menu'
# ./app/helpers/application_helper.rb:19:in `block (4 levels) in draw_menu'
# ./app/helpers/application_helper.rb:14:in `each'
# ./app/helpers/application_helper.rb:14:in `block (3 levels) in draw_menu'
# ./app/helpers/application_helper.rb:13:in `block (2 levels) in draw_menu'
# ./app/helpers/application_helper.rb:12:in `block in draw_menu'
# ./app/helpers/application_helper.rb:11:in `draw_menu'
# ./spec/helpers/application_helper_spec.rb:10:in `block (2 levels) in <top (required)>'为什么?我怎样才能使它像预期的那样工作呢?
谢谢!
发布于 2012-07-16 08:46:22
如果您调用link_to只传递一个字符串作为该参数,那么该字符串将用作链接文本。链接的目标是由当前操作和控制器提供的:url_for (底层助手)只是将您给出的参数与构成当前操作的参数合并。这就是为什么
link_to 'something', :action => :an_action生成一个指向呈现视图的控制器的an_action方法的链接。
在助手规范中,这个环境不存在:没有当前的操作或控制器,所以这是行不通的。
https://stackoverflow.com/questions/11495593
复制相似问题