我有一个自定义帖子请求如下:
= form_for(@property, :html => {:id => "promo-upload-form"} , :url => url_for(:action => 'update_promo_image'),:method => :post) do |f|
路线如下:
post 'properties/update_promo_image', :as => 'update_promo_image'
我需要在控制器上执行此操作:
def update_promo_image
@property = Property.find(params[:id])
if @property.update(property_params)
respond_to do |format|
format.html
format.js
end
else
render 'edit'
end
end
但我收到错误:
无法找到没有ID的属性
如果我将其恢复为标准/默认更新操作,则效果非常好。
有没有人对我做错了什么有任何见解?
由于 史蒂夫
答案 0 :(得分:2)
使用资源定义您的路线,这应该更容易:
的routes.rb
resources :properties do
member do
post :update_promo_image
end
end
这将使update_promo_image_property_url(object)
路线可用。
查看:
form_for(@property, :html => {:id => "promo-upload-form"} , :url => update_promo_image_property_url(@property)) do |form|
form.input :field1
form.submit
end
将路由到您的控制器方法(包括params[:id]
以识别属性)为您的逻辑传递params[:property][:field1]
。你的控制器应该没问题。