以嵌套形式动态生成的字段添加了两次 Rails
Dynamically generated field in nested form added twice Rails
我有两个模型,第一个是赠款,第二个是规格。 规范有两个字段"不合格"和"资格",并嵌套在授权中。 我基本上一切都设置得很好,但我需要帮助修改 JQuery,因为每次我单击"添加不合格"时,也会添加资格。它不会显示在窗体上,但在我的显示视图中显示为空白项目符号。 当我返回编辑表单时,我现在看到资格的空白字段。 如果我在资格中输入新文本,则两个字段都会保存正确的文本。 我希望能够添加一个字段而不自动添加另一个字段。 我的jQuery和帮助程序代码来自Railscasts PRO #196嵌套模型表单。 我是rails的新手,尤其是jQuery,所以任何帮助将不胜感激!
jQuery ->
$('form').on 'click', '.add_fields', (event) ->
time = new Date().getTime()
regexp = new RegExp($(this).data('id'), 'g')
$(this).before($(this).data('fields').replace(regexp, time))
event.preventDefault()
和帮助程序方法:
module ApplicationHelper
def link_to_add_fields(name, f, association)
new_object = f.object.send(association).klass.new
id = new_object.object_id
fields = f.fields_for(association, new_object, child_index: id) do |builder|
render(name.to_s.singularize + "_fields", f: builder)
end
link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("'n", "")})
end
我想
为任何可能尝试做同样事情的人分享我的解决方案。 我犯的错误是认为我可以在每个模型中有多个字段,但只将其中一个字段保存到数据库中。 但是每次我添加一个字段时,它都会将整个记录与所有其他字段一起保存,即使它们是空白的。 这就是为什么每次我添加资格时,我也会得到一个空白的不合格字段。 解决方案是分解模型并为所需的每个字段创建一个新模型。
由于我的真正目标只是拥有资格和不资格的项目符号列表,因此我想出了另外两个仅处理格式的解决方案。 第一种是使用富文本编辑器,另一种是使用.gsub在事后添加格式。 例如:
<p>
<strong>Eligibility:</strong>
<%= (@grant.eligibility).gsub(/[=+~]/, '=' => '<ul>','~' => '</ul>', '+' => '<li/>').html_safe %>
</p>
相关文章:
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- 为什么Highchart在我的rails应用程序中加载了两次?(未捕获的Highcharts错误#16)
- Ruby On Rails Ajax 提交提交两次
- Rails-jQuery 为什么我必须单击两次才能显示 jQuery 效果
- 地图,rails 4.2,javascript,鼠标悬停,只工作一次(或两次).然后在重新加载之后
- Ajax 触发两次替换 Rails 4 中的最后一个请求内容
- 以嵌套形式动态生成的字段添加了两次 Rails
- rails link_to_add_fields 以嵌套形式将每个字段添加两次
- JavaScript库在Rails中加载两次
- javascript在Rails 3.1基于资产的应用程序中包含了两次
- Rails 3.1 -调用AJAX请求两次
- Rails路由执行两次
- Rails资产管道:JavaScript被执行两次
- Rails在Heroku上,编辑器显示两次
- Highcharts on rails应用程序每次加载时渲染两次
- Rails jQuery被调用两次
- jQuery验证:为什么提交按钮必须点击两次在我的Rails应用程序