当前的动作名称问题

coc*_*coa 3 ruby-on-rails ruby-on-rails-3

当我在/编辑动作时,我看到编辑按钮,但问题是如果表单验证中出现错误,则呈现操作编辑,我看到创建按钮.我该怎么办呢?

<%= form_for(@page) do |f| %>
<% if controller.action_name =="edit" %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

fl0*_*00r 6

<% if ["edit", "update"].include? params[:action] %>
  <%= f.submit "Update" %>
<% else %>
  <%= f.submit "Create" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

更好的解决方案是将表单提取为部分,并使用按钮名称发送局部变量

你的edit观点:

<%= render :partial => "form", :locals => { :button_label => "Edit" } %>
Run Code Online (Sandbox Code Playgroud)

你的create观点:

<%= render :partial => "form", :locals => { :button_label => "create" } %>
Run Code Online (Sandbox Code Playgroud)

你的_form部分:

<%= form_for @object ... do |f| %>
  ...
  <%= f.submit button_label %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

UPD

我认为@idlefingers解决方案最适合您的问题


idl*_*ers 5

你可以只使用f.submit没有参数.这将创建"更新页面"和"创建页面"等名称.如果要更改这些措辞,可以在您的语言环境中进行设置.没有条件,没有动作名称的混乱.简单.