我目前只有两种控制器方法:index和create
我在索引页面上有一个表单。我希望它解析为我在控制器中的create方法。它似乎实际上是在解析那里,因为创建了一个新对象并将其保存在数据库中,但我没有传递单个参数。它在db中显示为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 %>
答案 0 :(得分:1)
“并不完全明白你的意思,但我所拥有的单一参数并没有传递给”。如果正在创建对象(正如您所说),您的数据库如何才能为零? Mitchism.all
必须回馈所有已保存的对象。
而且,这就是你的控制器必须如此:
class MitchismsController < ApplicationController
def index
@mitchisms = Mitchism.all
@mitchism = Mitchism.new #creates a new object
end
#after form is submitted, it will reach to create action below
def create
@mitchism = Mitchism.new(params[:mitchism])
if @mitchism.save
redirect_to mitchisms_path
else
render 'index'
end
end
end
答案 1 :(得分:-2)
在你的索引中,因为这是最后一个语句,你将永远得到这个值。
@mitchism = Mitchism.new.
您可能希望在索引中创建它
@mitchism = Mitchism.find(params[:mitchsim])