guc*_*cki 9 ruby-on-rails capybara rspec2
我正在使用rails 3.0.5,rspec2和最新的capybara.
路线设置如下:
scope "(:locale)", :locale => /de|fr|it|en/ do
resources :dossiers
end
Run Code Online (Sandbox Code Playgroud)
在application_controller我有这个:
def default_url_options(options={})
options[:locale] = "es"
options
end
Run Code Online (Sandbox Code Playgroud)
所以在我的观点中我可以使用
link_to 'test', dossier_path(1)
Run Code Online (Sandbox Code Playgroud)
没有任何问题.
但是当我在capybara的访问中做同样的事情时,它会尝试使用1作为语言环境而不是id.它只在我使用时有效
visit dossier_path(nil, 1)
Run Code Online (Sandbox Code Playgroud)
要么
visit dossier_path(:id => 1)
Run Code Online (Sandbox Code Playgroud)
但两者都是丑陋的,看起来像一个肮脏的黑客.那么为什么我需要使用这个脏的hack以及我要做什么,以便我可以像在视图中一样使用路径方法(所以没有必须添加nil或显式传递的脏黑客:id =>. ..)?:)
小智 7
我遇到了类似的问题.您可以在请求规范中的before块中设置default_url_options:
before :each do
app.default_url_options = { :locale => :es }
end
Run Code Online (Sandbox Code Playgroud)
Enr*_*sso -1
相反,如Using Capybara with RSpec下所示,我能够让它工作的唯一方法是编写
visit user_path(:id => myuser.id.to_s)
Run Code Online (Sandbox Code Playgroud)
所以对你来说应该是
visit dossier_path(:id => "1")
Run Code Online (Sandbox Code Playgroud)
有效吗?
| 归档时间: |
|
| 查看次数: |
3213 次 |
| 最近记录: |