- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在关注Railcasts 197为了为我的应用程序制作嵌套表单。我想做的是显示一个“删除”链接,该链接使用 jQuery 从表单中隐藏一行。
如果我点击删除,则不会发生任何事情,但如果我点击提交并且页面上有错误,则该行将被删除!
我已经尝试修复好几天了,但我就是看不出是否缺少某些内容或我需要添加某些内容,任何帮助将不胜感激。
代码:
model/album_review_proposal.rb
class AlbumReviewProposal < ActiveRecord::Base
attr_accessible :description, :user_id, :album_attributes
validates :description, :presence => true
has_one :album, :dependent => :destroy
accepts_nested_attributes_for :album , :allow_destroy => true
end
模型/album.rb
class Album < ActiveRecord::Base
attr_accessible :album_name, :artist, :year, :tracks_attributes
validates :album_name, :artist, :presence => true
validates :year, :numericality => { :only_integer => true }
belongs_to :album_review_proposal
has_many :tracks
accepts_nested_attributes_for :tracks, :allow_destroy => true
end
模型/track.rb
class Track < ActiveRecord::Base
attr_accessible :track_name, :track_number
validates :track_name, :track_number, :presence => true
belongs_to :album
end
views/album_review_proposals/_form.html.erb
<%= form_for(@album_review_proposal) do |f| %>
<% if @album_review_proposal.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@album_review_proposal.errors.count, "error") %> prohibited this album_review_proposal from being saved:</h2>
<ul>
<% @album_review_proposal.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.fields_for :album do |album| %>
<div class="field">
<%= album.label :album_name %><br />
<%= album.text_field :album_name %>
</div>
<div class="field">
<%= album.label :artist %><br />
<%= album.text_field :artist %>
</div>
<div class="field">
<%= album.label :year %><br />
<%= album.text_field :year %>
</div>
<div class="field">
<%= f.label :description %><br />
<%= f.text_area :description %>
</div>
<legend>Tracks</legend>
<table>
<th>#</th>
<th>Name</th>
<th></th>
<%= album.fields_for :tracks do |track| %>
<tr>
<div class="fields">
<td><%= track.text_field :track_number, :size => 2 %></td>
<td><%= track.text_field :track_name, :size => 50 %> </td>
<td><%= track.hidden_field :_destroy %></td>
<td><%= link_to_remove_fields "remove", track %></td>
</div>
</tr>
<% end %>
</table>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
controllers/album_review_proposals.controller.rb(仅来自脚手架的修改方法)
def new
@album_review_proposal = AlbumReviewProposal.new
@album = @album_review_proposal.build_album
4.times { @album.tracks.build }
respond_to do |format|
format.html # new.html.erb
format.json { render json: @album_review_proposal }
end
end
application.js
//= require jquery
//= require jquery_ujs
//= require_tree .
function remove_fields(link) {
$(link).prev("input[type=hidden]").val("1");
$(link).closest(".fields").hide();
}
function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g")
$(link).parent().before(content.replace(regexp, new_id));
}
application_helper.rb
module ApplicationHelper
def link_to_remove_fields(name, f)
f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)")
end
def link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render(association.to_s.singularize + "_fields", :f => builder)
end
link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")
end
end
我要删除的 HTML 的 HTML 部分
<legend>Tracks</legend>
<table>
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th></th>
</tr>
</thead>
<tbody>
<div class="fields">
<td><input id="album_review_proposal_album_attributes_tracks_attributes_0_track_number" name="album_review_proposal[album_attributes][tracks_attributes][0][track_number]" size="2" type="text" /></td>
<td><input id="album_review_proposal_album_attributes_tracks_attributes_0_track_name" name="album_review_proposal[album_attributes][tracks_attributes][0][track_name]" size="50" type="text" /></td>
<td><input id="album_review_proposal_album_attributes_tracks_attributes_0__destroy" name="album_review_proposal[album_attributes][tracks_attributes][0][_destroy]" type="hidden" value="false" /><a href="#" onclick="remove_fields(this); return false;">remove</a></td>
</tr>
<div class="fields">
<td><input id="album_review_proposal_album_attributes_tracks_attributes_1_track_number" name="album_review_proposal[album_attributes][tracks_attributes][1][track_number]" size="2" type="text" /></td>
<td><input id="album_review_proposal_album_attributes_tracks_attributes_1_track_name" name="album_review_proposal[album_attributes][tracks_attributes][1][track_name]" size="50" type="text" /></td>
<td><input id="album_review_proposal_album_attributes_tracks_attributes_1__destroy" name="album_review_proposal[album_attributes][tracks_attributes][1][_destroy]" type="hidden" value="false" /><a href="#" onclick="remove_fields(this); return false;">remove</a></td>
</tr>
<div class="fields">
<td><input id="album_review_proposal_album_attributes_tracks_attributes_2_track_number" name="album_review_proposal[album_attributes][tracks_attributes][2][track_number]" size="2" type="text" /></td>
<td><input id="album_review_proposal_album_attributes_tracks_attributes_2_track_name" name="album_review_proposal[album_attributes][tracks_attributes][2][track_name]" size="50" type="text" /></td>
<td><input id="album_review_proposal_album_attributes_tracks_attributes_2__destroy" name="album_review_proposal[album_attributes][tracks_attributes][2][_destroy]" type="hidden" value="false" /><a href="#" onclick="remove_fields(this); return false;">remove</a></td>
</tr>
<!-- repeat 3 times... -->
</tr>
</tbody>
</table>
最佳答案
在您看来,在 views/album_review_proposals/_form.html.erb
中,不要将类 fields
添加到每个字段内的 div
轨道的tr
,将其直接添加到tr
。问题在于,当添加到表格行内时,div 的行为不符合预期。
关于jQuery 不更新 Rails 中的嵌套表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466200/
我在 mongodb 中的玩家和锦标赛之间存在多对多关系。 我希望能够一次将许多玩家添加到锦标赛中。如果没有 ajax,这很简单,但我们有一个包含数千名玩家的数据库,因此表单选择变得巨大。 我们想为此
这个问题已经有答案了: When should I use html's and when spring's in Spring MVC web app? (3 个回答) 已关闭 6 年前。 我正
我正在 C++ Builder XE4 上使用 VCL。 我有以下组件。 FormMain 具有 TButton *B_select; FormSelect(或DialogSelect)具有 TCom
如何在不影响表单控件的情况下更改表单的 alphablend? 德尔福XE7 最佳答案 此问题的一个解决方案是使用多设备应用程序(如果无法使用VCL)。 如果您需要保留透明的TForm,只需更改属性T
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在尝试扩展 Django 注册以包含我自己的注册表单。原则上这是相当简单的。我只需要编写自己的表单( CustomRegistrationForm ),它是原始表单( RegistrationFo
我正在尝试为我的网站实现聊天功能。为了做到这一点,我遵循了以下教程:https://channels.readthedocs.io/en/latest/tutorial/ 然后我稍微更改了代码以实现它
有一个问题,我需要用一个 html 表单提交两个相互关联的模型表单。我知道如何提交两个单独的表格,但是在相关模型表格的情况下外键让我发疯。 问题是,第二个表单应该用外键填充字段到第一个表单的实例。 在
我正在创建一个工具,允许某人输入食谱,然后将其保存为 XML 文件,我已经创建了 XSD,但我想知道如何在我的网页上制作一个表单以允许用户输入他们的食谱并遵守模式。我一直在研究 Ajax 和 Jque
在 .net win 表单(如 asp.net web 表单)中是否有可用的验证控件? 因为很难为我的每个控件设置正确的条件,所以我的表单中也有很多重复的代码。 正确的做法是什么? 最佳答案 看看这个
我有一个简短的问题。我正在学习如何使用 javascript 制作注册表,发现此链接非常有用。 http://www.w3resource.com/javascript/form/javascript
我正在开发一个项目,该项目将使用循环将许多表单添加到 mysql 数据库中。在 javascript 部分中,我无法让 var i 在函数 updatesum() 中工作。有人可以帮我吗? 我试图避免
在我的应用程序上有一个包含 2 个字段和一个保存按钮的表单。 在我的 onClick 结束时我需要什么来将光标返回到第一个字段。 我有这个来清除它们 txtData.setText("
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
<input type="text" name="textfield" onKeyPress="javascript:alert(event.
我正在构建的网站有一个登录表单,作为所有其他模板扩展的 base.html 模板的一部分;因此,我需要以某种方式处理每个页面上的登录/注销逻辑。 目前每个页面都在单独的 View 中加载,那么实现它的
我有一个表单类,看起来像.. #forms.py class ExampleForm(forms.Form): color = forms.CharField(max_length=25)
有没有办法在表单定义中给表单一个特殊的错误渲染函数?在 customizing-the-error-list-format 下的文档中它展示了如何为表单提供特殊的错误呈现函数,但似乎您必须在实例化表单
我正在处理由多个页面组成的表单,我想解决验证问题。 当我点击提交按钮时,当前页面上的所有字段都会在下方显示错误消息,但是如果我更改页面,那么我需要再次点击提交,因为这些字段未设置为已触摸。 如果我可以
是否可以附加到继承表单的 exclude 或 widgets 变量? 到目前为止,我有以下设置。 class AddPropertyForm(forms.ModelForm): num_mon
我是一名优秀的程序员,十分优秀!