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

Create method does not add any records to my index list

我是 rails 的新手,我正在尝试传递 crud 方法。 我制作了一个 Leads 模型、控制器、视图和路线。

当我提交 /leads/new 页面的表单时,如果我写 post 'leads/index' 在我的 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' %>

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

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

其次,您将 params[:id] 传递给 Leads.new,这将通过显式传递的 id 产生线索,而不是让 ActiveRecord 处理它。你想通过(我猜,因为你没有你的 form 部分代码) params[:lead] 而不是(或任何形式调用它)。

此外,还有一些小问题,比如调用您创建的单曲 Lead @leads(应该是 @lead)——这应该不会造成任何问题,但更好 convention/better 为了便于阅读。