2011-08-12 21 views
2

我有下面的代码在我show.html.erb文件之一:NoMethodError在我的模型#show行动

<p> 
<b>Status:</b> 

<% if @server.serverUp?.to_s == "Up" %> 
    <% @server.update_attribute(@server.serverStatus, 'Up') %> 
     <span style="color: green;"> <%= @server.serverUp? %></span> 
     <% else %> 
     <span style="color: #ff0000;"> <%= @server.serverUp? %></span> 
     <% end %> 
</p> 

我的主要关注点是打破我的应用程序从工作线<% @server.update_attribute(@server.serverStatus, 'Up') %>。这行应该保存服务器的状态,无论是“Up”还是“Down”,并将其保存在“serverStatus”列下的“servers”表中。

然而,当我去http://localhost:3000/servers/id_of_server,其中“id_of_server”是从1-300的数字,出现以下错误信息:

NoMethodError in Servers#show 

Showing C:/SIS/app/views/servers/show.html.erb where line #18 raised: 

undefined method `=' for #<Server:0x60b9358> 
Extracted source (around line #18): 

15: <p> 
16: <b>Status:</b> 
17:  <% if @server.serverUp?.to_s == "Up" %> 
18:  <% @server.update_attribute(@server.serverStatus, 'Up') %> 
19:   <span style="color: green;"> <%= @server.serverUp? %></span> 
20:   <% else %> 
21:    <span style="color: #ff0000;"> <%= @server.serverUp? %></span> 

我似乎不理解的错误消息,因为我在提供的代码摘录中未使用等号。任何帮助,将不胜感激。

如果你们需要更多信息请告诉我。

在此先感谢

编辑:,而我在这,我只是想通过把这种类型的代码到show.html.erb文件来问我是否不按约定回报率而不是别的地方?因为在同一个文件中,我还有另一种算法,它读取模型的所有属性,将其放入数组中,并仅显示唯一值。

感谢

回答

2

你应该写:

<% @server.update_attribute(:serverStatus, 'Up') %> 

是的:你不应该更新模型视图。在你的情况下,它可以干净地生活在before_save或为什么不在after_initialize回调模型我猜。

最后:在Ruby中,惯例是蛇的情况下,这样的server_status代替serverStatus

+0

不错,这解决了错误,但是存在现在认为这个值是不实际存储到数据库中的问题。我需要将它保存在数据库中,并显示在我的应用程序的index.html.erb中。任何想法为什么它没有保存? – omarArroum

+0

你为什么说它没有保存?你有没有检查控制台或其他地方?有时候,你需要重新加载对象。 – apneadiving

+0

我检查了数据库,索引页和IRB。它在irb中完全没有保存 – omarArroum

相关问题