我有一个名为Details的模型,两个控制器方法new和create。新方法显示一个表单来创建详细信息(在new.html.erb中),该表单将发布到保存它的Create方法。 (当它成功保存时,它会使用详细信息呈现new.html.erb文件。)这可以按预期工作。
现在我想要一个单独的页面,其中包含一个链接以填写这些详细信息。我希望点击通过弹出窗口,例如红色框来完成预期的工作。当您单击该链接时,弹出窗口应显示表单,其提交应发布表单,如果成功完成,则刷新原始页面。如果帖子未保存,则相同的表单应显示错误。我需要做些什么才能让它在Ror中运行?我想我需要一些东西进入new.js.rjs并且可能是create.js.rjs,但我无法弄清楚要放在这些文件中的内容。
答案 0 :(得分:2)
Redbox更新页面的dom以在其末尾添加div。所以你的表格是主页的一部分。
因此,如果您在此红色框中添加表单标记,则所有页面都将重新加载,因为只有一个。
因此,您可以在页面中的任何位置添加(最好在结尾处):
<div id="redbox" style="display: none;">
<%= form_for @details do %>
# Whatever form fields you want here
<% end -%>
</div>
您执行的链接将打开redbox:
<%= link_to_redbox 'Open The Details Form', 'redbox' %>
这会在您的表格中显示您的红框 因为它是同一个页面,而不是一个新的窗口,当你验证你的表单时,它会重新加载所有的。
答案 1 :(得分:0)
我使用了link_to_remote_redbox,在点击时,在弹出窗口中获取由新方法调用呈现的表单。它提交给创建功能,它现在正在工作。实际上我以前没有ajax使它工作,我很难使它与ajax一起工作。一旦我为ajax调用做了单独的部分,并且这样做,问题就解决了: respond_to do | format | format.js {render:template =&gt; '细节/ ajax_template'} ... 端
我为创建和新方法调用提供了不同的模板,使用了:html =&gt; {:id =&gt;表格中的'some-id'}和:update =&gt; {:some-id}将表单替换为正常工作的消息。
所以我不知道我需要单独的模板用于不同风格的表单,当我提出上述问题时,我需要使用:update选项替换表单。