Rails在索引页面上形成而不通过params

时间:2013-05-16 15:09:22

标签: ruby-on-rails

我目前只有两种控制器方法: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 %>

2 个答案:

答案 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])