Ruby on Rails Saturday, May 1, 2010

Okay, some elucidation:

The following works when report.new_record? is true, fails when
report.new_record? is false:


form_for([@user, report])
...

because it's trying to call the undefined function 'user_report_path'.
(Of course it's undefined -- I've specified shallow routing!) So
perhaps @Alex's comment of http://www.ruby-forum.com/topic/206593 is
relevant here.

So if I modify my form_for for the new_record vs non-new_record, it
looks like this (yech):

<% form_for((report.new_record?)?([@user, report]):(report)) do |f| %>
<%= f.submit 'JumpUpAndDown' %>
<% end %>

Aside from looking pretty nasty, the generated HTML is a bit suspicious:
Shouldn't it be a POST method when report.new_record? is true and a PUT
method when report.new_record? is false?

Generated for report.new_record? == true:

<form action="/users/29/reports" class="new_report" id="new_report"
method="post">
<input id="report_submit" name="commit" type="submit"
value="JumpUpAndDown" />
</form>

Generated for report.new_record? == false:

<form action="/reports/79" class="edit_report" id="edit_report_79"
method="post">
<input id="report_submit" name="commit" type="submit"
value="JumpUpAndDown" />
</form>

What am I missing here?

- ff
--
Posted via http://www.ruby-forum.com/.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment