gpt4 book ai didi

javascript - 嵌套的 insert_html 错误 : Ruby On Rails & Javascript

转载 作者:行者123 更新时间:2023-11-29 15:54:20 24 4
gpt4 key购买 nike

大家好!这个问题快把我逼疯了!这似乎是 Rails 渲染 JS 时的错误,但我不确定。

简介:

我正在尝试创建一个包含许多 TRACK 的 RELEASE。这些 TRACKS 有很多 TRACK_LINKS。然后这些 TRACK_LINK 具有关联的 TRACK_LINK_TYPE(mp3、m3u、播客等)。把它想象成一张专辑。所以在添加发行时,您可以添加专辑轨道,每个专辑轨道可以有不同的链接(mp3、m3u、播客等)。我处于非常早期的阶段并利用脚手架——用户可以在表单上创建一个版本,通过 JS 添加 rails 并通过 JS 添加 rails 链接。这一切都很好——但是当我在代码中有“添加 rails 链接”功能时,添加 rails 不起作用!它默默地失败了 - 没有错误,只是转到 # anchor 。

在主发布表单中,我渲染了 TRACK 部分并添加了添加 TRACK 的链接:

<div id="tracks">
<%= render :partial => 'track', :collection => @release.tracks -%>
</div>

<%= add_track -%>

现在在 TRACK 部分中,我正在渲染 TRACK_LINK 部分并添加链接以添加 TRACK_LINK:

<div class="track">
<fieldset>
<legend>Track</legend>
<p>
<% @track = track %>
<%= error_messages_for :track -%>

<% fields_for_track(track) do |track_form| -%>
Track Name
<br />
<%= track_form.text_field :name -%>
<%= link_to_function "remove", "$(this).up('.track').remove()" -%>
<% track_links_id = "track_links_#{Time.now.to_i.to_s}" %>
<div id="<%= track_links_id %>">
<%= render :partial => 'track_link', :collection => @track.track_links -%>
</div>
<%= add_track_link track_links_id -%>
<% end -%>
</p>
</fieldset>
</div>

在 TRACK_LINK 部分中,我正在创建 TRACK_LINK 字段(及其关联的 TRACK_LINK_TYPE 字段):

<div class="track_link">
<% @track_link = track_link -%>
<% fields_for_track_link(track_link) do |track_link_form| -%>
Track Link
<br />
<%= track_link_form.text_field :url -%>
<%= select ("track_link_type", "id", @track_link_type.map {|type| [type.name, type.id]}) -%>
<%= link_to_function "remove", "$(this).up('.track_link').remove()" -%>
<% end -%>
</div>

最后,这里是 link_to_function 辅助方法:

module ReleasesHelper
def fields_for_track(track, &block)
prefix = track.new_record? ? 'new' : 'existing'
fields_for("release[#{prefix}_track_attributes][]", track, &block)
end

def fields_for_track_link(track_link, &block)
prefix = track_link.new_record? ? 'new' : 'existing'
fields_for("track[#{prefix}_track_link_attributes][]", track_link, &block)
end

def add_track
track = Track.new
track.track_links.build
link_to_function 'Add Track' do |page|
page.insert_html :bottom, :tracks, :partial => 'track', :object => track
end
end

def add_track_link(name)
link_to_function "Add Track Link" do |page|
page.insert_html :bottom, name, :partial => 'track_link', :object => TrackLink.new
end
end
end

结果是每个 link_to_function 都能正常工作,但是当我同时拥有“Add Track”和“Add Track Link”功能时,“Add Track”link_to_function 不起作用。渲染“添加轨道链接”功能的某些东西搞砸了!为长屁股帖子道歉!希望它不烦人,有人可以伸出援手吗?

最好的,普拉文

最佳答案

看看https://github.com/nathanvda/cocoon .文档很好,它可以节省您编写和维护此代码的时间。如果您有兴趣了解它是如何工作的,请查看源代码(它并不过分复杂)。祝你好运!

关于javascript - 嵌套的 insert_html 错误 : Ruby On Rails & Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/783727/

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