首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >创建允许我更新对象的“显示”页面的正确方法

创建允许我更新对象的“显示”页面的正确方法
EN

Stack Overflow用户
提问于 2013-10-25 20:14:31
回答 1查看 32关注 0票数 1

我有以下控制器

代码语言:javascript
代码运行次数:0
运行
复制
class ProductController < ApplicationController

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

  def update
    render text:params
  end
end

当我访问/product/1时,我会显示一个包含产品1的详细信息的页面,以及更新它们的方法。我就是这么做的:

代码语言:javascript
代码运行次数:0
运行
复制
<%= form_for @product, url: {:action => :update} do |f| %>
  <%= f.text_field "name" %></br>
  <%= f.text_field "quantity" %></br>
  <%= f.submit "Update" %>
<% end %>

当我点击更新时,它将呈现请求。

{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"sRzyQ0nP2ycWwgaS9eu5vHcID1b+hIl5Vho3KfX3XuE=", "product"=>{"name"=>"Test Name", "quantity"=>"2"}, "commit"=>"Update", "action"=>"update", "controller"=>"product", "id"=>"1"}

我将修改我的update方法以保存新属性,并将用户重定向回show页面。

这就是我应该如何更新数据库对象吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-25 21:08:36

如果我理解你的问题,你必须:

代码语言:javascript
代码运行次数:0
运行
复制
  def update
    @product = Product.find(params[:id])

    if @product.update_attributes(params[:product])
      redirect_to @product, notice: 'Product was successfully updated.'
    else
      render action: 'show'
    end
  end

希望这能有所帮助!

编辑

Rails的方法不是show操作来呈现表单,而是使用edit操作。看看脚手架:rails g scaffold foo,了解Rails是如何工作的。

但你想要的似乎是一个就地编辑。观看铁路。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19598681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档