当我在/编辑动作时,我看到编辑按钮,但问题是如果在表单验证中出现错误,它呈现动作编辑,我看到创建按钮。我该如何解决它?当前动作名称问题
<%= form_for(@page) do |f| %>
<% if controller.action_name =="edit" %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>
当我在/编辑动作时,我看到编辑按钮,但问题是如果在表单验证中出现错误,它呈现动作编辑,我看到创建按钮。我该如何解决它?当前动作名称问题
<%= form_for(@page) do |f| %>
<% if controller.action_name =="edit" %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>
<% if ["edit", "update"].include? params[:action] %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>
更好的方法是提取您的形式部分,并与按钮的名称发送本地变量,它
您edit
观点:
<%= render :partial => "form", :locals => { :button_label => "Edit" } %>
您create
观点:
<%= render :partial => "form", :locals => { :button_label => "create" } %>
您_form
部分:
<%= form_for @object ... do |f| %>
...
<%= f.submit button_label %>
<% end %>
UPD
我觉得@idlefingers解决方案最适合您的问题
尝试做这个检查:
<%= form_for(@page) do |f| %>
<% if controller.action_name =~ /update|edit/ %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>
我的解决办法:
<%= form_for(@page) do |f| %>
<%= f.submit(f.object.new_record? ? "Create" : "Update") -%>
<% end %>
这不起作用。当创建新记录并且验证失败时,'new_record?'仍然会成立。 – Zabba 2011-03-23 11:26:27
什么是错的?如果创建新记录失败,该记录是新的,并且按钮标签应该是“创建”。 – BitOfUniverse 2011-03-23 13:00:02
名称按钮 “提交” :) – Chirantan 2011-03-23 10:13:23