Ruby on rails 在ruby中使用rails路由,html表单不起作用
我不熟悉ruby和rails,我使用以下命令生成了一个名为users的新控制器:Ruby on rails 在ruby中使用rails路由,html表单不起作用,ruby-on-rails,Ruby On Rails,我不熟悉ruby和rails,我使用以下命令生成了一个名为users的新控制器: rails generate controller users register index login 之后,我打开了register.html.erb,并编写了以下代码: <h1>Register New User</h1> <p> <%= form_for :user do |f| %> <%= f.label:USERID %>&
rails generate controller users register index login
之后,我打开了register.html.erb
,并编写了以下代码:
<h1>Register New User</h1>
<p>
<%= form_for :user do |f| %>
<%= f.label:USERID %><%= f.text_field:userid %><br />
<%= f.label:PASSWORD %><%= f.text_field:password %><br />
<%= f.label:EMAIL %><%= f.text_field:email %><br />
<br />
<%= f.submit %>
<% end %>
</p>
def用户参数
参数require(:user).permit(:userid,:password,:email)
终止
结束
测试并没有被打印出来,表单的get和post方法根本不起作用。
和参数require(:user)。permit(:userid,:password,:email)
也不起作用。我得到一个错误,:user
为空
我得到的错误是:用户为空
form\u for(path/to/your/controller/action)
是一种帮助方法,用于创建带有POST或GET请求url路径的HTML表单元素。助手根据您在控制器操作中要求执行的操作,知道它应该是新记录还是更新记录。因此,基本上,当您在视图中为@user编写表单时,它在相应的控制器操作中查找@user
。由于您当前没有它,因此会出现此错误
有关更多信息,请参阅
要解决当前问题,您必须在控制器的寄存器中定义@user
操作:
def register
@user = User.new(user_params)
end
然后,在register.html.erb
文件的表单中,可以使用该@user
:
<h1>Register New User</h1>
<p>
<%= form_for @user do |f| %>
<%= f.label :USERID %>
<%= f.text_field :userid %><br />
<%= f.label :PASSWORD %>
<%= f.text_field :password %><br />
<%= f.label :EMAIL %>
<%= f.text_field :email %><br />
<br />
<%= f.submit %>
<% end %>
</p>
注册新用户
仍将收到此错误:参数丢失或值为空:userUse@user
非:user
在视图的表单中。请仔细看我的代码。
<h1>Register New User</h1>
<p>
<%= form_for @user do |f| %>
<%= f.label :USERID %>
<%= f.text_field :userid %><br />
<%= f.label :PASSWORD %>
<%= f.text_field :password %><br />
<%= f.label :EMAIL %>
<%= f.text_field :email %><br />
<br />
<%= f.submit %>
<% end %>
</p>