尝试使用form_for,我一直收到错误"表单中的第一个参数不能包含nil或为空。"错误在第一行中高亮显示:
<%= form_for @item do |f| %> #------error highlited here
<%= f.label :Task %>
<%= f.text_field :name, placeholder: "What do you have to do?" %>
<% end %>
部分:
<%= form_for @item do |f| %>
<%= f.label :Task %>
<%= f.text_field :name, placeholder: "What do you have to do?" %>
<% end %>
控制器:
```
class ItemsController < ApplicationController
def index
@items = Item.all
end
def new
@item = Item.new
end
def create
@item = Item.new
@item.name = params[:item][:name]
@item.user = current_user
if @item.save
flash[:notice] = "Item added; go accomplish it!"
else
flash.now[:alert] = "Uh oh, it didn't save. Try again."
render :new
end
end
def show
@item = Item.find(params[:id])
end
end
```
并且,show视图(我称之为partial):
<%= render partial: 'items/form', item: Item.new, locals: {items: @item} %>
到目前为止,我的研究表明问题可能出在这些文件中。我已经看到我可以简单地写,&lt;%= form_for Item.new do | f | %&gt; ,但我想避免这种情况,因为所有人都建议不要这样做。这个错误是如何修复的?如何确保第一个参数不是空/无?(我确实在Rails控制台中创建了一个项目)
答案 0 :(得分:1)
将两个答案放在一起,你应该使用:
<%= render partial: 'items/form', locals: {item: @item} %>
并将您的变量称为:
<%= form_for item do |f| %>
在说locals: { item: @item }
时,您正在说&#34;访问实例变量&#39; @ item&#39; as&#39; item&#39;&#34;
答案 1 :(得分:0)
部分地,您的变量可以在没有@
前缀的情况下访问(即item
)。它们不是实例变量。
如果你需要确定一个&#34; local&#34;被传递给部分人,使用Ruby的defined?
。