轨:
我使用相同的部分'_form'
'创建'和'更新'但表单应发送到的网址是不同的
我生成的rails代码将@xxx作为参数提供给form_for
我想rails会判断是否内容为空来发送给'创建'或'更新'?
但我使用的是嵌套资源。 rails似乎并不那么聪明。
那么,我的最佳做法是什么?
将'if'放入_form?
创建和更新同时使用一个局部模板_form
但是表单提交的URL不一样
rails自动生成的直接给form_for给了个@xxx做参数我猜是按内容是否为空判断是创还还是更新的?
但是我的情况是个嵌套的资源
导轨似乎没有聪明到这种程度?
那么我的最佳实践是什么?
在_form中写逻辑判断么?
路线:
book_structures GET /books/:book_id/structures(.:format) {:controller=>"structures", :action=>"index"}
POST /books/:book_id/structures(.:format) {:controller=>"structures", :action=>"create"}
new_book_structure GET /books/:book_id/structures/new(.:format) {:controller=>"structures", :action=>"new"}
edit_book_structure GET /books/:book_id/structures/:id/edit(.:format) {:controller=>"structures", :action=>"edit"}
book_structure GET /books/:book_id/structures/:id(.:format) {:controller=>"structures", :action=>"show"}
PUT /books/:book_id/structures/:id(.:format) {:controller=>"structures", :action=>"update"}
_form:
<%if (form_method == :post) %>
<%using_url = book_structures_path%>
<%elsif (form_method == :put) %>
<%using_url = book_structure_path%>
<%end%>
<%= form_for(@structure,:url => using_url,:method => form_method) do |f| %>
答案 0 :(得分:1)
您可以使用
<%= form_for([@book, @structure] ,:method => form_method) do |f| %>
为嵌套资源构建表单。