【问题标题】:Rails3: one controller many partials for form data submissionRails3:一个控制器,用于表单数据提交的多个部分
【发布时间】:2012-11-08 17:53:55
【问题描述】:

我不确定这是否是最好的方法,但我有一个控制器,最初我打算控制一个显示索引,该索引在其上呈现许多部分(一个标题部分,然后有一些魔法来呈现不同的部分)在用户填写表格的步骤中......表格在多个页面中有许多部分)。我认为最终 ajax 是要走的路,但我什至还没有到那一步。我不确定这是不是正确的方法,所以我想这就是我要问的……一个控制器的许多不同部分是这样的吗?还是必须将表单数据的每个“页面”分解为自己的控制器?允许用户填写表单(复选框、评论部分)并单击“下一步”,传递他们正在填写的数据模型并将该模型保存在每个下一步中?

【问题讨论】:

  • 听起来你需要一个状态机来处理这个。为此目的编写了各种 gem,以及 rails 中包含的那些 ...
  • 好的,有什么名字可以让我用谷歌搜索开始研究这个吗?这个过程很简单,只是不知道如何以 Rails 方式执行此操作。最坏的情况,我可以将其分解为带有索引/显示视图等的单独控制器,但这似乎不是正确的方法。

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


【解决方案1】:

U 可能不需要多个控制器,但 1 个具有某些操作的控制器可能是一个好的开始。 =)

然后每个动作应该只加载它需要的部分。就像你可以给局部动作名称一样,很容易知道要渲染哪个局部。

或者你可以尝试使用wicked

有一个railscasts

【讨论】:

  • 我试过了,但我必须做错了......可以将部分呈现到特定的 div,是否会重新加载页面?我需要ajax来做到这一点吗?到目前为止,路由一直是我的问题。我的当前控制器中有一个显示动作,它来自另一个控制器,其中传入了模型数据,这是正确的!然后当我接管它并想要开始浏览这些表单页面时......该方法不再适合......
  • 你必须为每个新的表单页面创建另一个操作。因此,每个人都有一条新路线。然后在每一个上你都会渲染一个不同的部分。请参阅我的帖子编辑。
  • 与邪恶同行。它非常适合,尽管我在传递一个 id 时遇到了一些问题(上面的导轨显示他使用 current_user 方法使用它,我需要传递一个对象 ID,到目前为止,这已被证明是困难的 params[:id ] 保留给它要去的步骤页面)哦,到目前为止一切都很好..
【解决方案2】:

好吧,您可以使用一种方法来决定要渲染哪个部分。 使用这个例子或者做一些元编程。

  class YourController < ApplicationController
       def index
          render :partial => partial_selector(param)
       end

       private
       def partial_selector param
          #logic to decide what partial do render
          #returns the partial name
       end
 end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-30
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多