【问题标题】:Form submit doesn't update database表单提交不更新数据库
【发布时间】:2013-09-18 15:51:57
【问题描述】:

我正在尝试创建列表,每个列表都有 2 个属性名称和描述。使用控制台但不使用网站表单时,数据库会创建并保存它。检查日志文件时,我发现网站表单没有发布,而是使用获取并重定向到自身,如何使网站形成 POST 而不是 GET,以便将其存储在数据库中。

日志文件:

在 2013-09-18 12:35:14 -0400 开始 GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 服务资产 /jquery_ujs.js - 304 未修改 (0ms)

这里是列表控制器:

 def create
    @list = Lists.new(params[:lists])
    if @list.save
      redirect_to @list
    else
      render 'new'
    end
  end

   def update
    if @list.update_attributes(params[:lists])

      flash[:success] = "lists updated"
      redirect_to @list
    else
      render 'edit'
    end
  end

def new
    @list = Lists.new
  end

这是用户创建列表的表格

<%= form_for @list, url: newlist_path(@list), html: { method: :put } do |f| %>

      <%= f.label :name %>
      <%= f.text_field :name %>
  </br>
      <%= f.label :description %>
      <%= f.text_field :description %>


      <%= f.submit "Create the List" %>
    <% end %>

【问题讨论】:

  • 您确定您的型号名称是 Lists not List
  • 默认情况下,创建是一个 POST 不放。请在提交表单后检查并确认您的创建操作正在执行
  • 它使用控制台创建和保存,使用网站输入数据时不创建也不保存,因此网站上的表单没有保存,所以表单没有问题,因为使用控制台时创建工作
  • 同意,我会在控制器中update 方法的第一行添加一个raise params.to_yaml,看看它是否真的命中了update 方法。
  • 我说的是创建动作而不是创建活动记录的方法。提交表单后检查正在调用的操作。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

您的 form_for 助手正在路由到不正确的操作。尝试路由到 create 操作:

<%= form_for @list, url: {action: "create"} do |f| %>

【讨论】:

    【解决方案2】:

    我不知道您粘贴的控制器代码摘录是否完整,但您可能错过了初始化列表对象以进行更新。在您的 update 操作中,您只有

    if @list.update_attributes(params[:lists])
    

    但您之前没有初始化 @list 变量。所以你可能需要类似的东西

    @list = Lists.find(params[:id])
    

    您还可以检查您的日志文件并验证发送到控制器的参数。

    【讨论】:

    • def show @list = Lists.find(params[:id]) end def edit @list= Lists.find(param[:id]) end
    • 开始 GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-09-18 12:35:14 -0400 服务资产 /jquery_ujs.js - 304 未修改 ( 0ms)检查日志文件时,我发现它没有向数据库发布任何内容,而是被重定向到自身,但在创建方法中,我让它重定向到@list
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2021-09-20
    相关资源
    最近更新 更多