当我进入/编辑操作时,我看到编辑按钮,但问题是如果表单验证中出现错误,则呈现操作编辑,我看到创建按钮。我该如何解决?
<%= form_for(@page) do |f| %>
<% if controller.action_name =="edit" %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>
答案 0 :(得分:6)
<% 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解决方案最适合您的问题
答案 1 :(得分:5)
你可以只使用没有参数的f.submit
。这将创建“更新页面”和“创建页面”等名称。如果要更改这些措辞,可以在您的语言环境中进行设置。没有条件,没有动作名称的混乱。简单。
答案 2 :(得分:2)
尝试执行此检查:
<%= form_for(@page) do |f| %>
<% if controller.action_name =~ /update|edit/ %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>
答案 3 :(得分:2)
我的解决方案:
<%= form_for(@page) do |f| %>
<%= f.submit(f.object.new_record? ? "Create" : "Update") -%>
<% end %>