自定义帖子动作不通过参数

时间:2014-05-23 11:51:07

标签: ruby-on-rails ruby

我有一个自定义帖子请求如下:

= 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的属性

如果我将其恢复为标准/默认更新操作,则效果非常好。

有没有人对我做错了什么有任何见解?

由于 史蒂夫

1 个答案:

答案 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]。你的控制器应该没问题。