【发布时间】:2013-05-16 23:40:38
【问题描述】:
我目前只有两个控制器方法:index 和 create
我在索引页上有一个表格。我希望它解决我在控制器中的创建方法。当一个新对象被创建并保存在数据库中时,它似乎实际上是在那里解决的,但是我拥有的单个参数没有被传递。它在数据库中显示为 nil。
我有很多关于 Rails 和使用的约定的知识。我认为这不是路由问题,因为正在创建对象。只是没有参数被推送。
这是我的控制器:
class MitchismsController < ApplicationController
def index
@mitchisms = Mitchism.all
@mitchism = Mitchism.new
end
def create
@mitchism = Mitchism.new(params[:mitchsim])
@mitchism.save
redirect_to mitchisms_path
end
end
这是我的观点:
<h1>Mitchisms</h1>
<%= form_for(@mitchism) do |f| %>
<ul>
<% @mitchism.errors.full_messages.each do |error| %>
<li><%= error %></li>
<% end %>
</ul>
<p>
<%= f.label :body, "Add your Mitchism:" %><br />
<%= f.text_field :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
<% @mitchisms.each do |mitchism| %>
<div id="mitchisms">
<%= mitchism.body %>
</div>
<% end %>
【问题讨论】:
-
你有一个错字
params[:mitchism] -
juanpastas 是正确的,这就是创建
nil属性的原因,因为您传递的参数不存在(其计算结果为nil)。此外,您可能应该向您的模型 guides.rubyonrails.org/active_record_validations_callbacks.html 添加一些验证,并按照 Kiddorails 的建议更新代码。 -
感谢各位的帮助。我觉得这是一个错字,我像个白痴。我也会按照 Kiddorails 的建议重写我的控制器。
标签: ruby-on-rails