1

我目前只有两个控制器方法:索引和创建

我在索引页上有一个表格。我希望它解决我在控制器中的创建方法。当一个新对象被创建并保存在数据库中时,它似乎实际上是在那里解决的,但是我拥有的单个参数没有被传递。它在数据库中显示为 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 %>
4

2 回答 2

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
于 2013-05-16T15:27:03.127 回答
-2

在您的索引中,由于这是最后一条语句,因此您将始终获得该值。

@mitchism = Mitchism.new.

您可能想找到它而不是在索引中创建它

@mitchism = Mitchism.find(params[:mitchsim])
于 2013-05-16T15:17:52.983 回答