【发布时间】:2011-06-25 05:38:17
【问题描述】:
已更新...
我在提交 ajax 表单时遇到问题。不确定它是否是路由问题,或者可能是 UJS 问题。 (使用 jquery 1.6.1 和最新的 jquery-ujs)
这是为创建操作表单生成的 html
<form method="post" id="new_product_pressing" data-remote="true" class="simple_form product_pressing" action="/products/my_product_id/product_pressings" accept-charset="UTF-8">
<input type="hidden" value="✓" name="utf8">
<input type="hidden" value="blablablatokenblablabla" name="authenticity_token">
<label for="product_pressing_total_pressed">Total pressed</label>
<input type="text" size="5" required="required" name="product_pressing[total_pressed]" id="product_pressing_total_pressed"
<input type="submit" value="Create Pressing" name="commit" id="product_pressing_submit">
</form>
更新操作表单也是有效的,但可能是多余的发布
我的路线是:
resources :products, :shallow => true do
resources :product_pressings, :as => :pressings, :only => [:create, :update]
end
product_pressings POST /products/:product_id/product_pressings(.:format) {:action=>"create", :controller=>"product_pressings"}
pressing PUT /product_pressings/:id(.:format) {:action=>"update", :controller=>"product_pressings"}
对于创建操作...日志显示:
Started POST "/products/product-057/product_pressings" for 127.0.0.1 at...
Processing by ProductPressingsController#create as JS
Parameters: {"product_id"=>"my_product_id"}
如果我删除远程 true,"product_pressing"=>{} 参数将被传递,但不会通过 :remote => true。
更新...
Started POST "/product_pressings/4e01ad24e1607cc46100008e" for 127.0.0.1 at...
ActionController::RoutingError (No route matches "/product_pressings/4e01ad24e1607cc46100008e"):
抛出一个路由错误,即使它显示了没有远程 => true 的确切 url 和方法。这是有效的,我不确定它什么时候停止,但我不明白是什么导致了这种行为。
【问题讨论】:
-
这是创建还是更新操作?它在新/编辑表单中的工作方式相同吗?
-
我看不到任何 csrf 令牌...
标签: ruby-on-rails ajax forms