2011-08-24 78 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