【发布时间】:2011-07-06 22:15:44
【问题描述】:
我正在使用 Ruby on Rails 3.0.7,我想知道如何重构、DRY(不要重复自己)和改进 我的视图文件中的以下代码:
<% articles.each do |article| %>
<div>
<%= link_to 'add', '#', :id => "create_#{article.id}" %>
</div>
<script type="text/javascript">
# Code - Block 1
$jQ('#create_<%= article.id %>').live('click', function(event) {
$jQ.ajax({
type: "POST",
url: "<%= article_url(@article) %>/create",
data: "article_id=<%= @article.id %>",
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + ' - ' + errorThrown + '\n\n' + jqXHR.responseText);
},
success: function(data, textStatus, jqXHR) {
$jQ('#create_<%= article.id %>').replaceWith('<%= escape_javascript("added") + (link_to 'remove', '#', :id => "destroy_#{article.id}") %>')
}
});
});
# Code - Block 2
$jQ('#destroy_<%= .id %>').live('click', function(event) {
$jQ.ajax({
type: "POST",
url: "<%= article_url(@article) %>/destroy",
data: "article_id=<%= @article.id %>,
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + ' - ' + errorThrown + '\n\n' + jqXHR.responseText);
},
success: function(data, textStatus, jqXHR) {
$jQ('#destroy_<%= article.id %>').replaceWith('<%= escape_javascript("removed") + (link_to 'add', '#', :id => "create_#{article.id}") %>')
}
});
});
</script>
<% end %>
注意:
-
each声明! - 上面的“两个代码块”几乎相等。
【问题讨论】:
标签: javascript jquery ruby-on-rails ruby ruby-on-rails-3