2011-08-24 77 views
0

我正在使用Rais3和in_place_editing plugin在Rails中進行編輯

這裏是控制器的代碼:

in_place_edit_for :name, :title 

這裏是index.html.erb:

<% @contracts.each do |contract| %> 
    <tr> 
    <td><%= contract.name %></td> 
    <td><%= contract.title %></td> 
    <td><%= contract.content %></td> 
    <td><%= link_to 'Show', contract %></td> 
    <td><%= link_to 'Edit', edit_contract_path(contract) %></td> 
    <td><%= link_to 'Destroy', contract, :confirm => 'Are you sure?', :method => :delete %></td> 
    <td><%= in_place_editor_field contract, 'name' %></td> 
    </tr> 
<% end %> 

我剛纔添加一行到視圖:

<td><%= in_place_editor_field contract, 'name' %></td> 

我已得到nex錯誤代碼:

名爲id的零,這將被錯誤地4 - 如果你真的想 零的ID,請使用OBJECT_ID

這裏是一個fill stack

我該如何解決這個錯誤?

+0

合同爲零? – murrekatt

+0

但所有其他線路的作品。例如:​​<%= contract.name%> – demas

+0

您是否在數據庫中的合同表中檢查了數據庫中是否有虛假數據?它是否可以將'in_place_editor_field'行註釋掉?也可以嘗試爲'@ contracts'選擇一個較小的集合,以查看數組中是否有一個合約可以工作等等。 – murrekatt

回答

1

實際上,控制器可能應該說

in_place_edit_for :contract, :title 

假設你有一個合同範本,並希望聯編輯標題。然後還需要更改視圖以反映標題,而不是內聯編輯的名稱。您要在哪一欄內聯編輯(都?)?

沿插件示例的行:

# Controller 
class ContractsController < ApplicationController 
    in_place_edit_for :contract, :name 
end 

# View 
<%= in_place_editor_field :contract, 'name' %> 

EDIT

變化視圖,以具有可變的一個實例

<% @contract = contract %> 
<%= in_place_editor_field :contract, 'name' %> 
+0

我已將視圖更改爲'in_place_edit_for:contract,:name',但沒有任何更改。 – demas

+0

你是指控制器? – murrekatt

+0

您在視圖中的語法與示例中的略有不同,即您在模型名稱前沒有冒號'(:)'。 – murrekatt