0

我有一个简单的地址簿页面,其中列出了条目,并且在不同型号的选项卡下有一个“添加配置文件”按钮。

假设此页面位于 Dashboard#AddressBook。在此页面中,我希望 Add Profile 按钮加载 Individuals#New 的表单,并允许它在不切换页面的情况下提交。

个人模型调用像地址这样的子模型,这些子模型具有预设选项,因此需要在控制器中设置一个变量。

使用 AJAX 和模态似乎是正确的方法,但我找不到一个工作示例,可以让我将 RESTFUL 控制器用于从另一个控制器中的页面创建的模型。

如何在页面上为不同的控制器创建模型?

4

2 回答 2

1

没问题,在一个页面上为不同的控制器有多个表单:

<%= form_for @address do |f| %>
...
<% end %>

<%= form_for Article.new do |f| %>
...
<% end %>

我了解,您的问题是如何为“外国”控制器预加载“新”对象。
我喜欢带有 AJAX 和延迟加载选项卡的方法:

<div id="tabs">
  <ul>
    <li><a href="#tabs-1">Own models form</a></li>
    <li><a href="<%= new_article_path %>">new Articel</a></li>
  </ul>
  <div id="tabs-1">
    <%= render "form"
  </div>
</div>

选择第二个选项卡new Article调用Article#new,您可以在其中初始化该对象并为其呈现表单。
请记住在没有布局的情况下渲染操作的视图。

于 2013-06-03T20:41:55.027 回答
1

您可以将表单呈现为部分,并应用选项remote: true。这将转到create另一个控制器的操作,您需要添加format.jsrespond_to块中。然后create.js.erb在 /views/profiles 目录中创建一个文件。这是您将使用 jQuery 更改视图以呈现您刚刚创建的新信息的地方。

于 2013-06-03T20:39:05.413 回答