Ruby on rails 为什么RubyonRails总是告诉我一个未实例化的变量?
编辑:已解决,在Brian Kunzig的答案+评论中查看解决方案 我决定尝试RubyonRails,并且一直遇到这个问题。我一直在寻找这样的问题,但没有一个解决方案能帮我解决。似乎我经常写一些不正确的代码。下面是一些代码片段: (忽略代码的用途,只是尝试一下) 我的控制器:Ruby on rails 为什么RubyonRails总是告诉我一个未实例化的变量?,ruby-on-rails,ruby,nomethoderror,Ruby On Rails,Ruby,Nomethoderror,编辑:已解决,在Brian Kunzig的答案+评论中查看解决方案 我决定尝试RubyonRails,并且一直遇到这个问题。我一直在寻找这样的问题,但没有一个解决方案能帮我解决。似乎我经常写一些不正确的代码。下面是一些代码片段: (忽略代码的用途,只是尝试一下) 我的控制器: class AuthsController < ApplicationController def index @auths=Auth.all end
class AuthsController < ApplicationController
def index
@auths=Auth.all
end
def new
@auth=Auth.new
end
def show
@auth=Auth.find(params[:id])
end
end
class AuthsController
My index.html.erb:
<div style="margin: 0 auto; width:50%; text-align: center">
<h1>Please authorise your use of this webpage and its database(s).</h1>
<%= form_for :auth, url: auths_path do |f| %>
<% if @auth.errors.any? %> ==> RAILS REPORTS ERROR IN CODE HERE
<div id="error_explanation">
<h2>
<%= pluralize(@auth.errors.count, "error") %> prohibited
this authentification from being saved:
</h2>
<ul>
<% @auth.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :username %><br>
<%= f.text_field :username %>
</p>
<p>
<%= f.label :password %><br>
<%= f.text_field :password %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
</div>
请授权您使用此网页及其数据库。
==>RAILS在此报告代码错误
禁止
无法保存此身份验证:
所以,底线是。例如,Rails说我不能将@auth以_的形式用于block。或者其他任何地方。。它总是说它属于尼勒阶级之类的东西。它显然想让我以某种方式实例化它,但这难道不足以使该方法成为新的并放在以下行:@auth=auth.new吗
我只是对这种情况感到困惑,因为我不知道该怎么办。非常感谢
另外,我使用
是因为它不接受@auth,这就是下一行的错误所在。我已经看到了在控制器之外“在运行中”实例化它的解决方案,但我希望按照预期的方式进行实例化。您应该将此表单放在new.html.erb
文件中,而不是索引中。索引
用于列出条目,而新建
和创建
操作处理发布
请求。出现错误是因为您试图列出所有身份验证,但尚未创建任何身份验证。此外,如果您使用标准rails路由,那么您将通过GET
请求发送表单。使用足智多谋的路由,并将此表单放入该控制器的新视图中,它应该可以工作
路由文件应为:
resources :auths
这将自动提供所有必要的路由。如果在修改后键入rake routes
,您将看到新生成的URL及其帮助程序。您会注意到,它提供了create
和update
操作一个POST
/PUT
请求,而其他人是GET
您应该将此表单放入new.html.erb
文件中,而不是索引中。索引
用于列出条目,而新建
和创建
操作处理发布
请求。出现错误是因为您试图列出所有身份验证,但尚未创建任何身份验证。此外,如果您使用标准rails路由,那么您将通过GET
请求发送表单。使用足智多谋的路由,并将此表单放入该控制器的新视图中,它应该可以工作
路由文件应为:
resources :auths
这将自动提供所有必要的路由。如果在修改后键入rake routes
,您将看到新生成的URL及其帮助程序。您会注意到,它提供了create
和update
操作一个POST
/PUT
请求,而其他人则是GET
您的索引
控制器处理程序仅声明@auths
。你到底为什么希望定义@auth
?你不应该在index.html.erb文件中有表单内容。请将表单代码放入new.html.erb文件中。索引用于显示身份验证对象的列表。它已解决。感谢您的回复。您的索引
控制器处理程序仅声明@auths
。你到底为什么希望定义@auth
?你不应该在index.html.erb文件中有表单内容。请将表单代码放入new.html.erb文件中。索引用于显示身份验证对象的列表。它已解决。谢谢你的回复。谢谢你的回复。我做了一些项目,将表单放在new.html.erb中,它运行正常。这是否意味着由于路由,表单必须在“新”模板中?我特别希望它在第一个打开的东西上出现,这就是为什么它在那里。编辑:已将resources:auths添加到路由中file@lmatejic不一定,但由于您仅在actionsnew
和show
中定义了@auth
,因此这些是您可以在中使用它的唯一视图。有时甚至可以将表单放入部分(\u表单
),并将其包含在定义了@auth
的页面上(新建
和编辑
),我知道如何创建视图和其他方法,那么如何使表单成为在欢迎页面之后打开的第一件事呢?页面上写着欢迎!下面有一个“继续”按钮,它会将您带到一个功能窗体,而不显示以前输入的所有数据。如果您使用的是Rails标准资源路由,那么是的,它必须进入新操作。如果您在控制台中键入“rake routes”,它将显示该资源生成的路由及其请求类型。索引操作预定义为通过“获取”请求提交您的页面,这意味着如果您希望通过表单提交数据,则需要将其更改为POST请求。从主页创建指向该身份验证控制器的新操作的链接。在你的hompe页面视图中这样做:它将把他们带到正确的页面。谢谢你的回复。