【问题标题】:Rails similar form fields across multiple viewsRails 跨多个视图的类似表单字段
【发布时间】:2016-10-15 01:58:41
【问题描述】:

这个问题扩展了我之前发布的Rails combining RESTful methods in a new controller 的问题。使用我的 Rails Web 应用程序,用户注册并创建了一个项目。对于转化跟踪,我正在创建一个getting_started 视图,该视图将允许人们在单个操作中(在单个页面上)注册和创建项目。

我现在有一个问题,特别是对于projects,我将有两个视图上的表单字段,即在newupdate 视图上呈现的项目部分_form。其次,getting_started 视图上的用户和项目详细信息表单。我觉得我在复制很多代码,而 rails 有一种更简单的方法,我只是没有看到。我还经常更改project 字段,并希望单点更新project _formgetting_started _form 的表单。

我读过部分视图,在部分视图中会影响性能,我也不认为你可以简单地在部分中包含表单字段,然后在表单中呈现它们(会抛出一个错误,询问什么“ f" 意味着我假设?)。

任何建议如何最好地做到这一点?

【问题讨论】:

    标签: ruby-on-rails forms partial-views


    【解决方案1】:

    我认为您在用户类中寻找 accepts_nested_attributes_for :project 并为您的表单寻找类似的东西:

    <%= form_for @user do |f| %>
      <%= f.fields_for :project do |builder| %>
       <%= render :partial => "project_form", :locals =>  { f: builder } %>
      <% end %>
    <% end %>
    

    它将允许您在非嵌套视图中使用相同的表单:

    <%= form_for @project do |builder| %>
       <%= render :partial => "project_form", :locals =>  { f: builder } %>
    <% end %>
    

    【讨论】:

    • 酷让我试试看!谢谢。出于兴趣,projects_form 部分中的f.submit 按钮是否会被用作新的&lt;%= form_for @user do |f| %&gt; ... getting_started 表单的提交按钮?即:对于这个新的getting_started 视图,我不需要表单上的提交按钮,因为它会从我们正在渲染的 `fields_for :project' 部分中拉出提交按钮?
    • 你最好把提交按钮留在最上面的表单。当您使用嵌套属性时,将向用户发送数据的最顶层表单也将提交嵌套子表单的数据。阅读更多here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多