Ruby on rails RoR:在单击按钮时保存数据
我被按钮点击时的持久数据所困扰。是否可以从另一页获取不同控制器功能的参数 控制器 查看create.html.erb index.html.erb 当我运行它时,当我单击create按钮时,它会直接从index.html.erb指向failure.html.erb,而不会点击create.html.erb。另外,如何在单击按钮后保留创建方法中的数据?您的操作操作将重定向到创建,并且您的创建操作将呈现失败或成功,您的创建操作从不执行默认操作,即呈现您的创建视图 大多数情况下,新操作会呈现表单,而应该是POST的create操作会实际创建并保存数据 现在重定向到create将永远不会成功,因为它不会接收任何数据,因此创建用户将始终失败,因此它将始终显示失败屏幕 [更新]最简单但仍然肮脏的修复方法: 如果重定向到创建操作,则它是GET请求,而不是POST 因此,最简单的解决方法是:Ruby on rails RoR:在单击按钮时保存数据,ruby-on-rails,Ruby On Rails,我被按钮点击时的持久数据所困扰。是否可以从另一页获取不同控制器功能的参数 控制器 查看create.html.erb index.html.erb 当我运行它时,当我单击create按钮时,它会直接从index.html.erb指向failure.html.erb,而不会点击create.html.erb。另外,如何在单击按钮后保留创建方法中的数据?您的操作操作将重定向到创建,并且您的创建操作将呈现失败或成功,您的创建操作从不执行默认操作,即呈现您的创建视图 大多数情况下,新操作会呈现表单,而应
def create
if request.post?
@login = Login.new(params)
if @login.save
render :action => 'success'
else
puts (@login.errors.full_messages)
render :action => 'failure'
end
else
@login = Login.new
end
end
因此,如果它是一篇文章:尝试保存并检查错误。如果是GET,只需渲染create.html.erb
最好的、干净的REST方式是从操作操作重定向到新操作,表单将发布到创建操作。应该是这样的。您的视图页面中有success.html.erb视图页面吗?是的。我有。当我删除所有验证时。我得到了成功页面。但是为什么我没有看到create.html页面?但是我想当我转到索引页面并单击create按钮时。它将转到create action并呈现create.html.erb,然后当我点击submit按钮时,create action本身会保存数据并检查错误。如果我想保持现在的设计不变,我应该做什么改变来实现这一点?可能吗?谢谢你的编辑和工作为我,但是的,我会改变设计,并添加新的行动在控制器。
<h1>Welcome to DemoSite.com</h1>
<p></p>
<%= form_for (@login), :url => {:action => "create"} do |f| %>
<p>
<%= f.label :Name %><br>
<%= f.text_field :name %>
</p>
<p>
<%= f.label :Email %><br>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :Phone_Number %><br>
<%= f.telephone_field :phone_number %>
</p>
<p>
<%= f.label :Password %><br>
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation %><br>
<%= f.password_field :password_confirmation %>
</p>
<p>
<%= f.submit('Submit') %>
</p>
<% end %>
<h1>Welcome to DemoSite.com</h1>
<p></p>
<%= form_tag "/logins/operation", :method => "post" do %>
<p>
<%= label_tag(:username, "Username") %><br>
<%= text_field_tag(:username) %>
</p>
<p>
<%= label_tag(:password, "Password") %><br>
<%= password_field_tag(:password) %>
</p>
<p>
<%=submit_tag "Create" %>
<%= submit_tag "Clicked" %>
</p>
def create
if request.post?
@login = Login.new(params)
if @login.save
render :action => 'success'
else
puts (@login.errors.full_messages)
render :action => 'failure'
end
else
@login = Login.new
end
end