4

在处理你不是 100% 熟悉的任何框架时,我发现尝试理解和清理任何无关的警告是明智的,只要这样你就有更好的机会在真正的错误发生时注意到它们。

我最近得到的一个是:

 DEPRECATION WARNING: @model will not longer be implicitly assigned to model

它似乎没有破坏我当前代码库中的任何内容,但我担心只是因为我不完全理解警告。我认为通常最好不要在你的部分中使用@model。

尽管如此,每次这个特定的“模型”出现在它的部分时,这个警告就会被调用。

我应该如何明确分配它?我在控制器中创建了@model,然后使用集合调用部分(理解为“railsy”方法。)

谁能向我解释这里发生了什么,以及在这种情况下有哪些最佳实践?我还没有吓坏,但数英里的警告往往会淹没我的应用程序的实际输出。

4

2 回答 2

3

挖完这张灯塔票,我就不会太在意了;然而。

不适当的“@variable 将不再隐式分配给变量”消息

于 2009-06-13T16:39:59.073 回答
1

在 2.3.5 中,是的,您应该修复您的代码。你曾经能够做到这一点

@rocket_launcher = RocketLauncher.find(params[:id])
page.insert_html :bottom, 'ajax_this', :partial => 'rocket_launcher'

这很好(@rocket_launcher 在部分中被选中)。不再。现在你必须做

page.insert_html :bottom, 'ajax_this', :partial => 'rocket_launcher', :locals=>{:rocket_launcher=>@rocket_launcher}

也就是说,你的例子

<%=render :partial => "rocket_launcher", :collection => @rocket_launchers %>

很酷,现在应该修复 2.2.x 中的弃用警告(在 2.3.5 中)。

于 2010-02-17T12:31:48.820 回答