Create方法不会将任何记录添加到我的索引列表中

时间:2015-03-19 22:08:34

标签: ruby-on-rails routes crud

我是rails的新手,我正试图通过crud方法。 我制作了Leads模型,控制器,视图和路线。

如果我写post 'leads/index',当我提交my / leads / new页面的表单时 在我的route.rb文件中,我的浏览器将我引导到我的新记录未显示的索引页面。

如果我在路线中跳过上面的代码,我会收到路由错误。

控制器:

   def new
     @leads = Leads.new
   end

   def create
     @leads = Leads.new(params[:id])
     if @leads.save
       redirect_to(:action => index)
     else
       render(new)
     end
    end

路线:

resources :leads

查看索引:

<h1>Leads#index</h1>
<%= link_to 'Add new Leads', new_lead_path %>
<% @leads.each do |lead| %>
    <tr>
      <td><%= lead.name %></td>
      <td><%= lead.familyname %></td>
      <td><%= lead.mobile %></td>
      <td><%= lead.email %></td>
      <td><%= link_to 'show' , lead %></td>
    </tr>
<% end %>

查看新功能:

<h1>Leads#new</h1>
<%= render 'form' %>

2 个答案:

答案 0 :(得分:0)

Rails说模型名称应该是单数,控制器名称应该是复数。如果你遵循它对你的理解和所有其他人的理解更好。

答案 1 :(得分:0)

首先 - Sontya是正确的,你的Lead模型应该是单数。这有助于解决路由问题。

其次,您正在将params[:id]传递给Leads.new,这将导致明确传递id,而不是让ActiveRecord处理它。你想要传递(我猜,因为你没有form部分代码)params[:lead]代替(或者不管形式如何调用它)。

此外,还有一些小问题,例如调用您创建的单个Lead @leads(应该是@lead) - 这不应该导致任何问题,但它更好的约定/更好可读性。