【问题标题】:Creating a multi-step create action in Rails在 Rails 中创建多步骤创建操作
【发布时间】:2010-02-10 05:34:31
【问题描述】:

我的应用程序的一部分有时需要通知用户他们的操作,但应用程序直到提交表单后才知道需要通知用户(这消除了 Javascript)。

基本上发生的情况是用户上传了一个或多个包含记录的文件,如果文件中的记录数大于 X,那么我必须确定样本大小并仅使用该数量的文章,文章被选中的都是随机选择的。我遇到的问题是用户可以在创建操作和编辑操作上上传文件。因此,以前用户可能已经上传了 2 个从未达到大于 X 的记录数的文件,并且在最近的一次编辑中他们做了 - 现在我们需要创建一个样本集。

这不是什么大问题,但是因为他们过去创建了文章,我们现在需要从以前的文件中删除一些记录,因为我们正在创建一个样本集 - 所以我需要通知用户即将发生的事情。

所以,一旦用户点击提交,我确定文件中的记录数,如果它大于 X,我需要显示一条消息,用户必须点击继续或取消(理想情况下我可以在这里呈现一个视图这样我就可以向用户提供漂亮的、风格化的信息)。如果它小于 X,那么我不在乎,继续。

【问题讨论】:

    标签: ruby-on-rails forms controller


    【解决方案1】:

    您应该能够在创建发生后检查文件的数量,如果超过 X 数量则重定向。我假设您知道current_user 是什么,并且您正在FileController 中将文件上传到当前用户的帐户。

    def create
      @file = current_user.files.create(params[:file])
      if current_user.files.count >= X
        redirect_to :controller => "files", :action => "too_many_files"
      else
        redirect_to file_path(@file)
      end
    end
    

    【讨论】:

    • 我认为这可能有效..我唯一担心的是我在这里使用了accepts_nested_attributes_for,因此它将文件创建为嵌套元素的一部分 - 让我处理这个,我会让你知道。如果您还有其他想法,请随时告诉我,谢谢您的意见!
    • "在此操作中多次调用渲染和/或重定向。请注意,您只能调用渲染或重定向,每个操作最多调用一次。另请注意,重定向和渲染都不会终止执行动作,所以如果你想在重定向后退出一个动作,你需要做一些类似“redirect_to(...) and return”的操作。
    • 什么版本的 Rails?在示例中重写
    • 我最终创建了一个类似的解决方案,只是将用户发送到同一控制器中的另一个操作,感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2021-11-10
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多