【发布时间】:2014-06-06 23:36:57
【问题描述】:
我很确定这是一个非常菜鸟的错误,但我不明白为什么我不能在不导致 NoMethodError 的情况下直接将表单添加到我的主页。
这是我目前的设置,它工作得很好。
view/front_pages/home.html.erb(我的主页)
<!--declare :title to be SHOULD I GET THIS-->
<% provide(:title, "SHOULD I GET THIS") %>
<div class = "container">
<h1>Should I really spend money on this?</h1>
<h2>Let's crunch in some numbers and find out...</h2>
<%= link_to "Get Started", calculate_path, class: "btn btn-info " %>
</div>
view/users/new.html.erb(我的表单现在所在的位置)
<% provide(:title, "Calculate")%>
<div class = "form-group container">
<%= simple_form_for @user do |form|%>
<%= form.error_notification%>
<%= form.input :price%>
<%= form.input :wallet%>
<%= form.button :submit, "Submit", class: "submit"%>
<%end%>
</div>
控制器/users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
end
但是,我希望表单直接出现在我的主页上,这样用户就不需要单击额外的按钮来访问表单。我试过了
查看/front_pages/home.html.erb
<!--declare :title to be SHOULD I GET THIS-->
<% provide(:title, "SHOULD I GET THIS") %>
<div class = "container">
<h1>Should I really spend money on this?</h1>
<h2>Let's crunch in some numbers and find out...</h2>
<%= link_to "Get Started", calculate_path, class: "btn btn-info " %>
</div>
<div class = "form-group container">
<%= simple_form_for @user do |form|%>
<%= form.error_notification%>
<%= form.input :price%>
<%= form.input :wallet%>
<%= form.button :submit, "Submit", class: "submit"%>
<%end%>
</div>
它返回 NoMethodError。我以为是因为我没有在front_page控制器中初始化@user变量,所以我尝试了
class FrontPagesController < ApplicationController
def new
@user = User.new
end
def home
end
end
但它仍然不起作用。我认为这是关于 MVC 的一些概念,我仍然不太了解。我的代码有什么问题,下次我应该记住什么,以免犯同样的错误?
PS:我使用 simple_form gem 来生成我的表单
编辑:错误消息是未定义方法 `model_name' for NilClass:Class
【问题讨论】:
-
发布完整的错误和导致它的行。
-
对不起,我已经添加了错误信息
标签: ruby-on-rails ruby simple-form