Ruby on rails 获取错误:未定义的方法“errors';for nil:尝试使用表单时使用NilClass
我有一个视图,它是另一个控制器的Ruby on rails 获取错误:未定义的方法“errors';for nil:尝试使用表单时使用NilClass,ruby-on-rails,Ruby On Rails,我有一个视图,它是另一个控制器的index方法,我试图向页面添加一个表单,但是我得到了一个错误 undefined method `errors' for nil:NilClass 我相当肯定is与我的路由有关,但我很难弄清楚错误发生在哪里 这是带有表单的视图 <% @song_ranks.each do |song_rank| %> <tr> <td><%= song_rank.title %></td> <
index
方法,我试图向页面添加一个表单,但是我得到了一个错误
undefined method `errors' for nil:NilClass
我相当肯定is与我的路由有关,但我很难弄清楚错误发生在哪里
这是带有表单的视图
<% @song_ranks.each do |song_rank| %>
<tr>
<td><%= song_rank.title %></td>
<td style="padding-left: 15px;"><%= song_rank.artist %></td>
<td style="text-align: center;"><%= song_rank.ranknum %></td>
<td style="white-space: nowrap; padding-left: 35px;">
<td> <%= render 'layouts/songrankform', song_rank: @song_rank %> </td>
</td>
</tr>
<% end %>
这是我的routes.rb文件
resources :band_songs do
post 'upvote', to: 'band_songs#upvote'
post 'band_songs_action'
post 'updaterank', to: 'band_songs#updaterank'
end
表单实际上是我复制到此视图的另一个模型的一部分
这个部分表单有一个模型,我将表单放入的视图和控制器有一个不同的模型。因此,我想做的是将另一个视图中的表单保存到另一个模型。根据您的问题,您似乎没有在索引操作中初始化
@song\u rank
您没有正确传递表单对象。尝试改变
<td> <%= render 'layouts/songrankform', song_rank: @song_rank %> </td>
到
因为在你的循环中,
song\u-rank
是正确的对象,而不是@song\u-rank
看起来好像@band\u-song没有定义。在哪里初始化它?可能在before_action中,或者在update method initilize中,它实际上是我试图将song_rank
表单放入的另一个视图/控制器。下面的答案是,我现在可以在提交表单时创建新记录,但我需要它来更新现有记录,这是我遇到的问题。您不能使用来自其他控制器/操作的变量。假设你只有一个切入点,那就是你的行动。所有变量只能在那里初始化。因此可以在您的视图中使用它们是否可以使用SongRank.update
来更新现有记录?表单立即提交,但它会创建一个新记录,而不是更新现有记录
<td> <%= render 'layouts/songrankform', song_rank: @song_rank %> </td>
<td> <%= render 'layouts/songrankform', song_rank: song_rank %> </td>