Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 自定义控制器操作不工作_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 自定义控制器操作不工作

Ruby on rails 自定义控制器操作不工作,ruby-on-rails,ruby,Ruby On Rails,Ruby,希望有人能指出我在这里的错误。我有一个带有自定义操作和标准提交按钮的表单: = form_for( @property, :html => {:data => {:abide => ''}, :id => 'property-edit-form'},:url => url_for(:action => 'update_promo')) do |f| 路线如下: post 'properties/update_promo', :as => 'updat

希望有人能指出我在这里的错误。我有一个带有自定义操作和标准提交按钮的表单:

= form_for( @property, :html => {:data => {:abide => ''}, :id  => 'property-edit-form'},:url => url_for(:action => 'update_promo')) do |f|
路线如下:

post 'properties/update_promo', :as => 'update_promo'
控制器操作为:

def update_promo
  @property = Property.find(params[:id])

  if @property.update(property_params)
    respond_to do |format|
      format.html
      format.js
    end
  else
    render 'edit'
  end   
end
问题是它仍然在调用默认的更新操作。我得到了一个错误:

Couldn't find Property with 'id'=update_promo
有人能帮忙吗

全航线

 get 'users/index'
  get 'home/index'

  get 'properties/update_regions', :as => 'update_regions'
  get 'properties/update_places', :as => 'update_places'
  get 'properties/update_map', :as => 'update_map'
  get 'properties/update_promo', :as => 'update_promo'

  root 'home#index'

  post "versions/:id/revert" => "versions#revert", :as => "revert_version"

  resources :properties

  resources :users do 
    collection do
      get :properties  # add this line 
    end 
  end

您可能正在方法化提交,因此正在使用id update\u promo调用show方法,请尝试添加

:method => :post 
到你的表格

要进行检查,请在提交时查看日志, 如果您的日志以

Started GET
而不是

Started POST

您需要添加所述参数以形成_for

您可能正在方法化提交,因此正在使用id update调用show方法,请尝试添加

:method => :post 
到你的表格

要进行检查,请在提交时查看日志, 如果您的日志以

Started GET
而不是

Started POST

您需要将所述参数添加到表单中,以便更新routes.rb文件的行:

get 'properties/update_promo', :as => 'update_promo'
为此:

post 'properties/update_promo', :as => 'update_promo'
此外,您可以将表单更改为如下所示:

= form_for( @property, :html => {:data => {:abide => ''}, :id  => 'property-edit-form'},:url => update_promo_path)) do |f|

对于(:action=>…)更新routes.rb文件的行,您可以使用url帮助程序而不是
url\u:

get 'properties/update_promo', :as => 'update_promo'
为此:

post 'properties/update_promo', :as => 'update_promo'
此外,您可以将表单更改为如下所示:

= form_for( @property, :html => {:data => {:abide => ''}, :id  => 'property-edit-form'},:url => update_promo_path)) do |f|

对于(:action=>…)

您可以使用url帮助程序而不是
url\u来发布更多路由文件吗?看起来问题在于路线的顺序,但这将有助于查看。谢谢Dave,在上面添加。尝试
:action=>更新\u promo\u path
我不确定这是否有效,这就是为什么在评论中发布它。你能发布更多路线文件吗?看起来问题在于路线的顺序,但这将有助于查看。谢谢Dave,在上面添加。尝试
:action=>更新\u promo\u path
我不确定这是否有效,这就是为什么在评论中发布它。谢谢,这也有帮助。谢谢,这也有帮助。欢迎你,伙计!此外,请尝试使用url帮助程序而不是
:action=>..
,因为您可以在一个位置将帮助程序名称更改为任何名称,但如果更改action名称,则必须在代码库中的任何位置更新它。警告:)不客气,伙计!此外,请尝试使用url帮助程序而不是
:action=>..
,因为您可以在一个位置将帮助程序名称更改为任何名称,但如果更改action名称,则必须在代码库中的任何位置更新它。警告:)