【问题标题】:Simulate redirect_to with remote option使用远程选项模拟 redirect_to
【发布时间】:2013-11-11 04:00:05
【问题描述】:

我有以下方案: lessons_controller -> show.html.erb,其中包含 *form_tag* 和 remote: true -> test_controller - > show.js -> _test.html.erb

所以我在lesson/show页面提交form_tag时收到_test.html.erb的内容。

但在某些情况下我想跳过课程/表演页面。

所以我想去 lesson/show 页面并在地下接收 _test.html.erb 的内容而不提交任何内容。类似于 lessons_controller 中的 redirect_to 的东西,带有 remote 选项来模拟 form_tag 提交。

有可能吗?

【问题讨论】:

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


    【解决方案1】:

    我认为您可以在加载课程#show 时调用 javascript 提交,并使用来自 _test.html.erb 的回调数据。

    我认为使用“脚本”类型发出重定向请求是不可能的好方法。

    【讨论】:

      【解决方案2】:

      不确定你的目的,如果你只想直接显示表单,就像在js资产中放入以下一样简单

      $ ->
        $(form#show_lesson).submit()
      

      如果你想在控制器级别控制它。您可以执行以下操作。

      # Lessons controller
      def show
        @lesson = Lesson.find params[:id]
        template = params[:show_directly].present? ? 'show' : 'show_with_test'
        render template
      end
      
      # views/show.html.erb
      render partial: 'show_form'
      
      # views/show_with_test.erb
      render partial: 'test', locals: {lesson: @lesson}
      

      使用

      浏览lessons/1 将显示原始表单

      浏览lessons/1?show_directly=1会直接显示全部。

      【讨论】:

      • 谢谢,比利。我想到了这个解决方案。但问题是我在 test_controller 中有很多逻辑。如果我将直接从课程控制器渲染部分测试,我需要在课程控制器中复制此逻辑。我不想这样,所以我想重定向到测试控制器来运行所有这些逻辑,然后渲染测试部分。
      • Alex,我还是不知道你的目的,什么时候需要渲染完整,为什么?没有这些就很难提出建议。如果用于更复杂的情况,我建议您使用“测试”以外的其他内容。
      • 说,如果访问者需要提交表单,但登录用户可以看到所有内容,那是不同的情况,应该设置权限。所以不同的目的决定了解决方案。
      • 我在普通情况下显示课程页面,并且它有远程提交表格以在学习课程后进行测试。但是,如果我使用重复参数调用课程,我想跳过学习课程页面(并显示测试)。
      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多