我对 Rails 非常陌生,我一直在构建 CMS 应用程序 后端。
一切都很顺利,但我想知道这是否可能?
基本上我有两个模型:
@page { id, name, number }
@extended_page { id, page_id, description, image }
这个想法是有一堆页面,但并非所有页面都有 扩展内容。如果有一个页面带有扩展 内容然后我希望能够有一个允许编辑的表单 他们俩。
在 Controller 中:
@page = Page.find(params[:id])
@extended= Extended.find(:first, :conditions => ["page_id =
?",@page.id])
@combined = ... #merge the two somehow
所以在 View 中:
<%- form_for @combined do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
...
<%= f.label :description %>
<%= f.text_field :description %>
<%- end >
这样在 Controller 中,只需有一个模型即可 已更新(这将同时更新)。
这可能吗?
最佳答案
首先,我认为您不需要为此使用第二个模型。您可以简单地为 Page
模型定义方法 extended?
,如果扩展页面模型的所有(或任何)属性都存在,则该方法返回 true
。
您可能还想研究一下 fields_for
表单辅助方法。您应该看到这样的事情:
<%- form_for @combined do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%- f.fields_for(:extended_page) do |ef| %>
<%= ef.label :image %>
<%= ef.file :image %>
<!-- other extended page form fields -->
<%- end %>
<!-- Other page form fields -->
<%- end %>
关于ruby-on-rails - 将 Rails 中的两个模型组合为一个表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947054/