我正在撰寫簡歷申請表,列出我的工作經歷,教育歷史和其他責任。這是我自己的第一個沒有教程的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