rsl
August 20, 2008, 12:17am
1
Hopefully someone here can help me figure out why the ERB:
<% form_for(@fund , :url => {:host => PRIVATE_HOST}, :html => {:class
=> ‘fund’, :multipart => true}) do |f| %>
raises an error in my specs:
No route matches {:action=>“index”}
but works fine in my app and generates the following, desired HTML:
.
Many thanks in advance.
RSL
rsl
August 20, 2008, 1:38am
2
On Tue, Aug 19, 2008 at 5:17 PM, RSL ___ [email protected] wrote:
.
If you’re using edge rails, there was a recent change that broke rspec:
http://rspec.lighthouseapp.com/projects/5645/tickets/497
I haven’t had time to address this, nor will I for at least several
days. I will have time to merge in a patch, however, if anybody else
has the time to fix the problem.
Cheers,
David
rsl
August 20, 2008, 3:09pm
3
Thanks, David but unfortunately for me this is happening on 2.0.2 Rails,
with rspec/rspec-rails, from about a month and a half ago. Must be
something else. Here’s hoping someone else has run across this.
rsl
August 20, 2008, 3:25pm
4
Please post the code example.
rsl
August 20, 2008, 6:24pm
5
I gave up on solving this. Very very strange that it even occurs.
Stranger still that I circumvented the problem by writing a view helper
to construct the url like this:
def private_fund_form_url(fund)
if fund.new_record?
funds_url(:host => PRIVATE_HOST)
else
fund_url(fund, :host => PRIVATE_HOST)
end
end
[which is what the form_for should have been doing internally anyhow]
and specing it in isolation. It passes in the helper specs so I just
stub out the helper call in the view specs and all is well. Thanks again
for your help, David.
RSL
rsl
August 20, 2008, 3:35pm
6
David C. wrote:
Please post the code example.
I have reduced the failing Rspec code to this:
require File.dirname(FILE ) + ‘/…/…/spec_helper’
describe “funds/_form.fbml.erb” do
before(:each) do
@current_user = stub_model(User)
@fund = stub_model(Fund, :supporters => [@current_user ])
assigns[:fund] = @fund
template.stub!(:current_user).and_return(@current_user )
end
it “should just render the template” do
render “funds/_form.fbml.erb”
end
end
which errors with:
ActionView::TemplateError in ‘funds/_form.fbml.erb should just render
the template’
No route matches {:action=>“index”}
On line #6 of funds/_form.fbml.erb
3: <p>You can still change your email address and payment details
at any time. Payment details are verified against fraud on the day of
payout to your good cause.
4:
5:
6: <% form_for(
@fund , :url => {:host => PRIVATE_HOST}, :html =>
{:class => ‘fund’, :multipart => true}) do |f| %>
7: <%= error_messages_for :fund %>
8:
9: Name for your fund:
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/routing.rb:1408:in
generate' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/url_rewriter.rb:124:in
rewrite_path’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/url_rewriter.rb:103:in
rewrite_url' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/url_rewriter.rb:81:in
rewrite’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/base.rb:616:in
url_for' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/helpers/url_helper.rb:71:in
send’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/helpers/url_helper.rb:71:in
url_for' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/helpers/form_tag_helper.rb:395:in
html_options_for_form’
/Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/core_ext/object/misc.rb:28:in
returning' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/helpers/form_tag_helper.rb:393:in
html_options_for_form’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/helpers/form_tag_helper.rb:38:in
form_tag' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/helpers/form_helper.rb:185:in
form_for’
app/views/funds/_form.fbml.erb:6:in
_run_erb_47app47views47funds47_form46fbml46erb' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:637:in
send’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:637:in
compile_and_render_template' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:365:in
render_template’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:316:in
render_file' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/base.rb:1100:in
render_for_file’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/base.rb:861:in
render_with_no_layout' /Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/layout.rb:270:in
render_without_benchmark’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/benchmarking.rb:51:in
render' /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/benchmark.rb:293:in
measure’
/Library/Ruby/Gems/1.8/gems/actionpack-2.0.2/lib/action_controller/benchmarking.rb:51:in
render' vendor/plugins/rspec-rails/lib/spec/rails/example/view_example_group.rb:130:in
send’
vendor/plugins/rspec-rails/lib/spec/rails/example/view_example_group.rb:130:in
render' spec/views/funds/_form.fbml.erb_spec.rb:13 vendor/plugins/rspec/lib/spec/example/example_methods.rb:83:in
instance_eval’
vendor/plugins/rspec/lib/spec/example/example_methods.rb:83:in
eval_block' vendor/plugins/rspec/lib/spec/example/example_methods.rb:21:in
execute’
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:48:in
timeout' vendor/plugins/rspec/lib/spec/example/example_methods.rb:18:in
execute’
vendor/plugins/rspec/lib/spec/example/example_group_methods.rb:305:in
execute_examples' vendor/plugins/rspec/lib/spec/example/example_group_methods.rb:304:in
each’
vendor/plugins/rspec/lib/spec/example/example_group_methods.rb:304:in
execute_examples' vendor/plugins/rspec/lib/spec/example/example_group_methods.rb:132:in
run’
vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:22:in
run' vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:21:in
each’
vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:21:in
run' vendor/plugins/rspec/lib/spec/runner/options.rb:106:in
run_examples’
vendor/plugins/rspec/lib/spec/runner/command_line.rb:19:in `run’
script/spec:4
Hope that helps and thanks for your assistance.
RSL