我正在撰写简历申请表,列出我的工作经历,教育历史和其他责任。这是我自己的第一个没有教程的rails应用程序,但我所做的大部分工作就是遵循相同的操作。所有的代码在这里:https://github.com/victorman/portfolio干燥代码导致产量翻番
快速概要。我对我的应用程序进行了ajax处理,并使其工作。但是我有一个具有完全相同html的模板作为视图的一部分,所以我用render :partial...
替换了该部分。结果是之前两倍的html。以下是我对应用做了更详细的描述。
我做了两个脚手架,一个用于乔布斯和一个用于分类。乔布斯有一个外键来分类。
我做了工作查看列表每个类别的链接。然后jobs#index
控制器仅查找该类别的作业表中的行。
然后我决定抛出一些Ajax在那里,以便点击链接只会重新加载相关数据。我在jobs#index
方法的末尾添加了respond_to。
def index
#find which jobs to display based on category_id in the url params
#if no category_id param is given default to 1
unless params.has_key? :category_id
@jobs = Job.find(:all, :conditions => {:category_id => 1})
else
@jobs = Job.find(:all, :conditions => {:category_id => params[:category_id]})
end
respond_to do |format|
format.html
format.js #index.js.erb
end
end
我做了一个index.js.erb文件,它检索新数据并替换旧数据。
var jobs = $("<%= escape_javascript(render(:partial => @jobs))%>").hide();
$("#jobs_table").replaceWith(jobs);
$("#jobs_table").fadeIn();
我添加了远程:对作业index.html.erb文件中的链接为true。
<ul>
<% Category.all.each do |category| %>
<li><%= link_to category.name, { :controller => "jobs", :category_id => "#{category.id}" }, :class => "category_link", remote: true %></li>
<% end %>
</ul>
而且我将模板部分作为显示作业的地方。它会永远找不到_jobs.html.erb,所以我不得不毕竟它的工作将其命名为_job.html.erb
<tbody id="jobs_table">
<% @jobs.each do |job| %>
<tr>
<td><%= job.organization %></td>
<td><%= job.location %></td>
<td><%= job.details %></td>
<td><%= job.start_date %></td>
<td><%= job.end_date %></td>
<td><%= link_to 'Show', job %></td>
<td><%= link_to 'Edit', edit_job_path(job) %></td>
<td><%= link_to 'Destroy', job, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
,但我还没有DRY'd了代码,所以我删除重复的部分从index.html.erb
这是在_job.html.erb
(如上所示)并用它替换它。
<%= render :partial => @jobs %>
,现在它给了我两个相同的<tbody>
标签使用id = “jobs_table”。为什么这会提供重复的数据?
我的回答有什么帮助吗? – 2014-10-07 12:53:40
他们似乎没有修复这个bug。 https://github.com/victorman/portfolio/commit/2a47305d3f82000c9c75f8b8effc32fd67ee74f0 – Victor 2014-10-13 15:08:50