gpt4 book ai didi

jquery - 在 Rails 3 中的嵌套模型表单中动态添加字段

转载 作者:行者123 更新时间:2023-12-03 22:31:50 25 4
gpt4 key购买 nike

我观看了http://railscasts.com/episodes/73-complex-forms-part-1http://railscasts.com/episodes/74-complex-forms-part-2但在尝试代码时它似乎对我不起作用 - 我的假设是自那时以来 Rails 内发生了很多变化。第二个问题是我正在使用 JQuery。

有谁知道有任何在线教程可以显示更简单的方法吗?我已经制作了一个嵌套模型表单 - 所以它实际上只是动态添加/删除字段,这让我很烦恼。

最佳答案

这是一个简单的示例,展示了如何从单个页面发送多个邀请。缺少一些小细节,但可能足以提供帮助。您可以通过一些简单的 jQuery 在 View 中添加和删除字段。该代码可以适用于任何类型的嵌套模型情况。希望能帮助到你! :)

InviteController.rb

class InviteController < ApplicationController
def new
@invites = Invite.new
end

def create
@invites = User.new(params[:user]).invites
if @user.update_attributes(params[:user])
return redirect_to root_url, :notice => "Your invite(s) were successfully sent!"
else
render :action => :new
end
end
end

用户.rb

class User < ActiveRecord::Base
has_many :invites

accepts_nested_attributes_for :invites
end

邀请.rb

class Invite < ActiveRecord::Base
belongs_to :user
after_create :send_invite

private

def send_invite
# Send e-mail...
end
end

new.html.erb

<% form_tag invites_path do %>
<%= error_messages_for :object => @user.invites %>
<ul id="invite-list">
<%= render @invites %>
</ul>
<div>
<%= submit_tag "Send Invite" %>
<%= link_to "Add Another", "#add", :id => "add-another" %>
</div>
<% end %>

_invite.html.erb

<%= fields_for "user[invites_attributes][]", invite do |i| %>
<li>
<%= link_to("Remove", "#delete", :class => "delete-invite") %>
<%= i.label :full_name, "Full Name" %>
<%= i.text_field :full_name %>
<%= i.label :email, "Email Address" %>
<%= i.text_field :email %>
</li>
<% end %>

application.js

$(document).ready(function() {
$('a#add-another').click(function() {
$('#invite-list li:first').clone().find('input').val('')
.end().appendTo('#invite-list');
});

$('.delete-invite').live('click', function() {
if ($('#invite-list li').length > 1)
$(this).parent().remove();
else
alert('You need at least one invite.')
});
});

关于jquery - 在 Rails 3 中的嵌套模型表单中动态添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com