我是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' %>
答案 0 :(得分:0)
Rails说模型名称应该是单数,控制器名称应该是复数。如果你遵循它对你的理解和所有其他人的理解更好。
答案 1 :(得分:0)
首先 - Sontya是正确的,你的Lead
模型应该是单数。这有助于解决路由问题。
其次,您正在将params[:id]
传递给Leads.new
,这将导致明确传递id
,而不是让ActiveRecord
处理它。你想要传递(我猜,因为你没有form
部分代码)params[:lead]
代替(或者不管形式如何调用它)。
此外,还有一些小问题,例如调用您创建的单个Lead
@leads
(应该是@lead
) - 这不应该导致任何问题,但它更好的约定/更好可读性。