【问题标题】:Change form (create to update) using javascript使用 javascript 更改表单(创建以更新)
【发布时间】:2011-05-06 02:43:54
【问题描述】:

我有一个简单的评论系统,用户可以在其中选择许多星,这会创建一个对 create 操作的 AJAX 调用(如果评论是新的)。

如果评论已经存在,我希望它改为调用 update 操作。

现在,如果页面加载到空白评论,第一个更改将调用 create,但所有后续请求都会调用,直到我完全重新加载页面。

如何在不刷新页面的情况下让create.js.erb 将评论表单从create 更改为update

澄清

如果特定用户第一次进入页面,他们应该能够创建评论,然后编辑自己的评论,而无需刷新页面。我的问题是 create then 更新转换没有发生。

【问题讨论】:

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


    【解决方案1】:

    我不明白你为什么想要那个。它真的实现了只有一个评论并且被越来越多的用户一遍又一遍地更新的方式吗?因为一个明显的实现是每次都创建一个全新的评论并且从不使用更新操作。

    我的意思是:

    class ItemReviewsController < ApplicationController
      def create
        @item = Item.find(params[:item_id])
        @item.reviews.create(params[:review])   # TODO check for errors and redirect
      end
    end
    

    有路线:

    resources :items do
      resources :reviews
    end
    

    如果我错了,请写出更多关于您解决该解决方案的动机。

    【讨论】:

    • árik - 我确实让每个用户都提交了他们自己的评论,但想象一下网站的新用户的情况。他们进来并选择一个评级(这会创建他们的评论)。当他们决定更改该评级时,表单需要更新此评论,而不是尝试再次创建新评论。为了清楚起见,我的意思是这个用户应该首先能够创建然后更新而不刷新页面。
    • 好吧,如果我理解得很好,用户不能发布多个评分,因为当他发布第一个评分时,用户界面会变为“更新”。您为什么不将其保留为“创建”操作并在服务器上决定它是第一个评论(然后继续插入到数据库)还是他正在改变他的意见(然后继续更新到数据库)。控制器接口不一定要复制模型接口。
    • árik - 我在从 create 正确重定向到 update 时遇到问题 - 它总是会被 show 操作拾取,然后它会声称它找不到与id='update'!
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2014-08-11
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多