【问题标题】:Posting a form through popup in Rails在 Rails 中通过弹出窗口发布表单
【发布时间】:2009-10-21 07:06:57
【问题描述】:

我有一个名为 Details 的模型,以及两个控制器方法 new 和 create。新方法显示一个用于创建详细信息的表单(在 new.html.erb 中),该表单被发布到保存它的 Create 方法。 (当它成功保存时,它会呈现带有详细信息的 new.html.erb 文件。)这按预期工作。

现在我想要一个带有链接的单独页面来填写这些详细信息。我希望单击通过弹出窗口(例如红框)完成预期的工作。当您单击该链接时,弹出窗口应显示表单,其提交应发布表单,如果成功完成,则刷新原始页面。如果帖子未保存,则相同的表单应显示错误。我需要做什么才能使其在 Ror 中工作?我想我需要在 new.js.rjs 和 create.js.rjs 中添加一些东西,但我真的不知道要在这些文件中放入什么。

【问题讨论】:

    标签: ruby-on-rails forms popup


    【解决方案1】:

    Redbox 更新页面的 dom 以在其末尾添加一个 div。所以您的表单是主页的一部分。
    所以如果你在这个红框中添加一个表单标签,你所有的页面都会被重新加载,因为只有一个。

    所以你可以在页面的任何地方添加(最好在最后):

    <div id="redbox" style="display: none;">
        <%= form_for @details do %>
            # Whatever form fields you want here
        <% end -%>
    </div>
    

    你做一个链接会打开红框:

    <%= link_to_redbox 'Open The Details Form', 'redbox' %>
    

    这将在您的表单中显示您的红框。
    由于它是同一页面,而不是新窗口,因此当您验证表单时,它会重新加载所有表单。

    【讨论】:

    • 我希望表单仅在您单击时呈现,我不希望它在页面加载时出现。无论如何,这也可能有效,但我想出了另一种方法。谢谢!
    【解决方案2】:

    我为此使用了一个 link_to_remote_redbox,它在单击时会在弹出窗口中获取由新方法调用呈现的表单。它提交给 create 函数,它现在正在工作。实际上,我之前已经让它在没有 ajax 的情况下工作,但我很难让它与 ajax 一起工作。一旦我为ajax调用做了单独的部分,问题就解决了,并且做: respond_to 做 |格式| format.js { 渲染 :template => 'detail/ajax_template'} ... 结束

    我为 create 和 new 方法调用提供了不同的模板,在表单中使用 :html => {:id => 'some-id'} 和 :update => {:some-id} 来替换表单带有它正常工作的消息。

    所以我不知道我需要为不同样式的表单提供单独的模板,并且当我问上述问题时我需要使用 :update 选项来替换表单。

    【讨论】:

    • 请你举个小例子来说明如何做到这一点。我尝试了不同的方法,但都失败了。
    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2012-01-26
    • 2011-09-30
    相关资源
    最近更新 更多