新手问题 用 form_for (@info) do |f| 提示 NoMethodError

wdrsam · 2015年10月06日 · 最后由 huacnlee 回复于 2015年10月07日 · 1745 次阅读

结构是这样的:

在 views/info/create.html下面, 用 form_for(@info) do |f| 提示 NoMethodError

路由里映射过去了的啊。

match '/create_message', to: 'info#create', via: 'get'

然后我在 InfoController.rb 里也加了这个的

def create
  @info = Info.new
end

如果不加 Info.new 就是 ArgumentError in Info,First argument in form cannot contain nil or be empty

求老司机指点迷津

老司机要求:贴完整的错误。

#1 楼 @chenge


NoMethodError in Info#create

Showing /home/coldfarmer/rubyprj/sharedinfo/app/views/info/create.html.erb where line #4 raised:

undefined method `infos_path' for #<#<Class:0xb4866488>:0xa25bfd4>

Extracted source (around line #4):






<div class="row">
<div class="span6 offset3">
<%= form_for(@info) do |f| %>
<%= f.label :content %>
<%= f.text_field :content %>
<%= f.submit "Create a Message" , class: "btn btn-large btn-primary" %>
3 楼 已删除

路由加: resources :infos

另外,可以 rake routes 显示和验证路由是否对。

#4 楼 @chenge 一直纠结为什么是 infos_path...反应过来了 resources 是跟复数....晕啊,谢谢老司机!

路由的问题请阅读 http://guides.ruby-china.org/routing.html 应该能解决 #5 楼 @wdrsam 的疑惑

需要 登录 后方可回复, 如果你还没有账号请 注册新账号