Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 RubyonRails:为什么“编辑”操作不起作用?_Ruby On Rails_Ruby On Rails 3_Form For - Fatal编程技术网

Ruby on rails RubyonRails:为什么“编辑”操作不起作用?

Ruby on rails RubyonRails:为什么“编辑”操作不起作用?,ruby-on-rails,ruby-on-rails-3,form-for,Ruby On Rails,Ruby On Rails 3,Form For,在视图/products/edit.html.erb中,我使用: 尝试更新id为8的产品时 我认为应该把表格的方法放进去。是这样吗?我该如何解决这个问题 某些控制器代码: def edit @product = Product.find(params[:id]) end def update update_params_with_new_values(params) @product = Product.find(params[:id]) if @product.updat

在视图/products/edit.html.erb中,我使用:

尝试更新id为8的产品时

我认为应该把表格的方法放进去。是这样吗?我该如何解决这个问题

某些控制器代码:

def edit
  @product = Product.find(params[:id])
end

def update
  update_params_with_new_values(params)

  @product = Product.find(params[:id])

  if @product.update_attributes(params[:product])
    flash[:notice] = "Product updated successfully."
    redirect_to(:product => 'index')
  else
    render('edit')
  end
end

def update_params_with_new_values(params)
  params[:product][:shop_id] = Shop.create(:name => params[:new_shop]).id if params[:product][:shop_id] == "new_shop"
  params[:product][:brand_id] = Brand.create(:name => params[:new_brand]).id if params[:product][:brand_id] == "new_brand"
end
routes.rb仅包含以下两行:

root :to => "products#index"
resources :products
试试这个

<% form_for @product %>
#code goes here
<% end %>
有关此项的详细信息,您可以将编辑路径设置为“编辑产品路径”

希望您现在能更好地理解它。

尝试使用此选项

<% form_for @product %>
#code goes here
<% end %>
有关此项的详细信息,您可以将编辑路径设置为“编辑产品路径”


希望您现在能更好地理解它。

为什么不使用:

<%= form_for @product do |f| %>
?


如果它不起作用,请将您的路线添加到问题中。

为什么不使用:

<%= form_for @product do |f| %>
?


如果它不起作用,请将您的路线添加到问题中。

确定。它现在可以工作了:但是,该方法仍然是POST,而根据更新的方法应该是PUT。我记得,浏览器/服务器只支持POST和GET方法。删除和放置是使用POST完成的。因此,当您创建一个表单时,在HTML中它只使用POST,但表单中添加了一个隐藏字段,Rails通过该字段区分您使用的方法感谢您的精彩解释!好啊它现在可以工作了:但是,该方法仍然是POST,而根据更新的方法应该是PUT。我记得,浏览器/服务器只支持POST和GET方法。删除和放置是使用POST完成的。因此,当您创建一个表单时,在HTML中它只使用POST,但表单中添加了一个隐藏字段,Rails通过该字段区分您使用的方法感谢您的精彩解释!我们可以看一下你的控制器代码和这个控制器的路线吗控制器和路线看起来不错。这些文件没有问题。我想知道你是如何进入编辑页面的。我指的是将您链接到编辑页的代码行。这里是:“操作”%>我们可以看看您的控制器代码以及此特定控制器的路由控制器和路由看起来不错。这些文件没有问题。我想知道你是如何进入编辑页面的。我指的是将您链接到编辑页面的代码行。这里是:“操作”%>
GET     /products/:id/edit      edit    return an HTML form for editing a photo
PUT     /products/:id   update  update a specific photo
<%= form_for @product do |f| %>