【问题标题】:Dynamic Nested Forms in Rails 4 + Ruby 2Rails 4 + Ruby 2 中的动态嵌套表单
【发布时间】:2014-02-10 08:51:53
【问题描述】:

我有一个链接,它给我带来了一个模式窗口。

例子:

link_to "@#{client_name(i)}", 
account_client_path(current_account.id,i.client_id), 
:remote => true,
class: "client-link", 
"data-toggle" => "modal", "data-target" => "client-dialog-form"

在这个窗口中,我想要一个名为 Issue 的模型的表单:

class Issue < ActiveRecord::Base

  before_save { self.number = number.downcase }

  validate :number,          presence: true, 
                             uniqueness: { case_sensitive: false },
                             length: { maximum: 50 }

  has_many :items
  accepts_nested_attributes_for :items

end

class Item < ActiveRecord::Base
  belongs_to :issue
end

我的问题是,我希望我的Issue 具有动态生成的嵌套项子表单。最好的方法是什么?我在这里用谷歌搜索了很多,但没有成功。

【问题讨论】:

    标签: ruby-on-rails ajax forms dynamic nested


    【解决方案1】:

    链接

    你可以像这样清理你的链接代码:

    link_to "@#{client_name(i)}", account_client_path(current_account.id,i.client_id), :remote => true, class: "client-link", data: {toggle: "modal", target: "client-dialog-form"}
    

    表格

    如果您要加载嵌套的表单字段,您必须做几件事才能使其工作:

    1. 构建 ActiveRecord 对象
    2. 使用fields_for 加载对象
    3. 在提交时处理表单参数

    方法如下:

    #app/controllers/issues_controller.rb
    def new
        @issues = Issue.new
        @issues.items.build # Creates AR object
    end
    
    def create
        @issues = Issue.new(issue_params)
        @issues.save
    end
    
    private
    
    def issue_params
        params.require(:issue).permit(:your, :issue, :params, items_attributes: [])
    end
    
    #app/views/issues/form.html.erb
    <%= form_for @issue do |f| %>
        <%= f.text_field :info %>
        <%= f.fields_for :items do |i| %>
            <%= i.text_field :info %>
        <% end %>
    <% end %>
    

    这将允许您调用表单并将其附加到您的页面。由于您的英语(很好),我无法确定您是否想即时添加额外的字段。如果你想那样做,我必须为你写更多的答案!

    在 cmets 中告诉我!

    【讨论】:

    • 谢谢你,里奇。是的,我确实想通过 ajax 或一些 gem 即时添加额外的字段。到目前为止,我发现了一个名为 cocoon (github.com/nathanvda/cocoon) 的宝石。
    • 嗨 Rich,您能指导我如何即时添加额外的字段吗?在这种情况下,为item(名为 info 的单个 text_field)检索 html 的链接?
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多