我有一个简单的地址簿页面,列出了条目,并在不同型号的标签下有一个“添加个人资料”按钮。
假设此页面位于Dashboard#AddressBook。 在这个页面中,我想要添加个人资料按钮来加载个人#New的表单,并允许它在不切换页面的情况下提交。
Individual模型调用像Address这样的子模型,它们具有预设选项,因此需要在控制器中设置变量。
使用AJAX和模态似乎是正确的方法,但是我找不到一个可以让我利用RESTFUL控制器来创建从另一个控制器中的页面创建的模型的工作示例。
如何在不同控制器的页面上创建模型?
答案 0 :(得分:1)
您可以将表单呈现为部分,并应用选项remote: true
。这将转到另一个控制器的create
操作,您需要将format.js
添加到respond_to
块。然后在/ views / profiles目录中创建一个名为create.js.erb
的文件。在这里,您将使用jQuery更改视图以呈现刚刚创建的新信息。
答案 1 :(得分: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
,您可以在其中初始化该对象并为其呈现表单。
请记住在没有布局的情况下渲染动作的视图。