- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个呈现多个表单的页面。目前,当用户提交这些表单中的任何一个时,它都会使用刚刚提交的表单中的内容更新(通过 ajax)同一页面上的 div。
我还想remove()在ajax post请求完成后刚刚提交的表单元素。但是,我需要能够访问 js.erb 文件中的特定表单 ID 才能执行此操作。
由于我的页面有 x 个动态呈现的表单,因此我无法简单地访问 js.erb 中的实例变量。
页面:
<% for peer_review in @peer_reviews %>
<%= render :partial => 'form', :locals => { :peer_review => peer_review } %>
<% end %>
<div id="completed_peer_reviews">
<%= render 'completed_peer_reviews' %>
</div>
@peer_reviews 实例变量包含已包含一些数据的新 PeerReview 对象的数组。
表格:
<div id="peer_review_form_<%= peer_review.reviewee_id %>">
<%= form_for peer_review, :html => { :method => "post" }, :remote => true do |f| %>
<%= f.error_messages %>
<p>
Peer Review for: <%= User.find(peer_review.reviewee_id).name %><br />
</p>
<p>
<%= f.label :rating %>:
<%= f.select :rating, [1, 2, 3, 4, 5], { :include_blank => 'None' } %>
</p>
<p>
<%= f.label :review %><br />
<%= f.text_area :review %>
</p>
<%= f.hidden_field :user_id, :value => peer_review.user_id %>
<%= f.hidden_field :reviewee_id, :value => peer_review.reviewee_id %>
<%= f.hidden_field :review_period_id, :value => peer_review.review_period_id %>
<p><%= f.submit "Submit" %></p>
<% end %>
</div>
js.erb:
$("#completed_peer_reviews").html("<%= escape_javascript(render('completed_peer_reviews')) %>");
我希望在 js.erb 文件中添加另一行,以删除刚刚触发 js.erb 文件执行的表单元素,如下所示:
$("#peer_review_form_<%= peer_review.reviewee_id %>").remove();
我实际上应该如何在这里引用peer_review.reviewee_id?或者我应该采取完全不同的方法?
最佳答案
这是RJS模板的经典问题之一。
如果您只是想解决问题,您可以传递一些临时 ID 来识别表单。例如:
# in the index
<% @peer_reviews.each.with_index do |peer_review, i| %>
<%= render :partial => 'form',
:locals => { :peer_review => peer_review, :i => i } %>
<% end %>
# then in the form (note, you don't need to specify POST in a form_for)
<div id="peer_review_form_<%= i %>">
<%= form_for peer_review, :remote => true do |f| %>
<%= hidden_field_tag 'temp_id', i %>
# finally in the create js.erb
$("#peer_review_form_<%= params[:temp_id] %>").remove();
<小时/>
话虽这么说,虽然 RJS 模板在很长一段时间内都是“Rails 方式”,但后来它们已经失宠了。
更现代的方法通常是带有 JSON API 的客户端 JS 模板,而不是运行服务器生成的 JS 模板 (RJS)。这有很多优点,其中之一是您现在遇到的 DOM 绑定(bind)问题不再存在。
这是一个如何使用纯 jQuery 执行此操作的示例,但有许多模板选项。
<script id="peer_review_tmpl" type="text/x-jquery-tmpl">
<div class="completed_peer_review">
<p>${review}</p>
...
</div>
</script>
然后您将创建一个处理程序并将其绑定(bind)到成功的 ajax 响应。这需要您的 peer_reviews#create
操作响应 JSON:
$('form.new_peer_review').bind("ajax:success", function(data) {
// remove the form which triggered the creation
$(this).remove();
// then render the data into a template, and append it to the list
$("#peer_review_tmpl").tmpl(data).appendTo("#completed_peer_reviews");
});
关于javascript - 导轨 : accessing a non-instance variable in js. erb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370591/
我有以下创建并执行 SQL 查询的方法: def edition_authors(edition, authors) query_string = "contributor_type = ? AN
使用 axlsx可以添加边框。我添加了这样的东西 red_border = p.workbook.styles.add_style :border => { :style => :thin, :col
我正在构建一个应用程序,该应用程序必须向多个雇主分配任务。 我已经建立了这些模型: #assignment.rb class Assignment :employer_assignments end
我正在尝试从 rails 2.3.x(使用 subdomain_routes 插件)转换一些子域路由,如下所示: map.subdomain :biz do |biz| biz.resources
到目前为止,这就是我所做的。 我在 Capfile 中加载了资源:js 仍然无法正常工作 http://guides.rubyonrails.org/asset_pipeline.html#preco
我正在使用最新的 ruby+rails,以及 filterrific gem。它工作得很好 - 但如何在每个范围内使用多个参数呢?对于单列过滤来说很简单,但是对于下面的场景,该如何处理呢? 按邮政
我正在使用最新的 ruby+rails,以及 filterrific gem。它工作得很好 - 但如何在每个范围内使用多个参数呢?对于单列过滤来说很简单,但是对于下面的场景,该如何处理呢? 按邮政
我正在尝试编写一个搜索方法,用于搜索文章的全文,并按搜索词在全文中出现的次数对结果进行排序。像这样的事情: def search term = params[:term] @articles
创建连接表时如下 class Project { select('users.*, time_pledges.hours_pledged as hours_pledged')}, through:
我在理解整体概念及其在 Rails 中的工作原理方面遇到了一些困难,我认为它可以为您完成一些工作,因为我习惯于手动构建关联。我目前有一个计费系统,我正在尝试创建一个订单部分,显然我的订单必须有许多产品
这是我的 application.html.erb 代码:
所以我有一个 .csv 文件,我已将其导入到一个数组中。它们都是用逗号分隔的,所以我继续为 em 制作了一个漂亮的数组。 现在我正在尝试查找具有匹配 ID 的记录,这样我就可以删除重复项并只保留最后遇
使用 ActiveRecord 执行以下 SQL 的最佳方法是什么: SELECT parent.* FROM sections AS node, sections AS parent WHERE n
我想在 gem 中的方法之一中添加一些自定义代码。在 Rails 2.3.8 中,我在 config/initializers 目录下添加了一个 .rb 文件,一切正常。 自从转移到 Rail3 后,
试图了解 :has_many 的影响正如它在敏捷 Web 开发书第 4 版中所介绍的那样 为购物车设置以下关系 class Cart :destroy end 这恭维了相关的 LineItem类(c
在所有关于 Rails 3 的麻烦之后,我是否可以在几乎不更改我的 ActiveRecord 代码的情况下轻松使用 DataMapper,以便我可以在 GAE 上运行我的 Rails 而不会有任何麻烦
使用 Rails 2/3,可以使用几个插件之一(见 Best way to export a database table to a YAML file?)轻松地将数据库导出(转储)到 YAML。 但
我的布局中有这样的东西 ... ... 'user/bar' %> 在 user/bar.html.erb 中我有 stuff 这似乎不起作用。我发现 yield :test 在部分之前执行,
我使用 https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview 集成了 omniauth-facebook| .但我收到以下
我有一个 Rider 表,其中包含他们的城市。我正在从数据库中提取与当前用户所在城市匹配的条目。 这就是我在 Controller 中写的内容: @riders = Rider.where("city
我是一名优秀的程序员,十分优秀!