ruby-on-rails - 当前 Action 名称问题

标签 ruby-on-rails ruby-on-rails-3

当我在/edit 操作中时,我看到编辑按钮,但问题是如果表单验证中出现错误,它会呈现操作编辑并且我看到创建按钮。我该如何解决?

<%= 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

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

关于ruby-on-rails - 当前 Action 名称问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5403612/

相关文章:

mysql - ActiveRecord:查询列不在数组中的位置

ruby-on-rails - 具有继承资源的嵌套对象

ruby-on-rails-3 - Phusion 乘客子 URI 符号链接(symbolic link)问题

ruby-on-rails - 收到失败/错误 : expected: 1 time with any arguement,:任何参数 0 次

ruby-on-rails - Rails Webrick:配置监视哪些目录的更改

javascript - JavaScript 函数的行为出现问题 `return this`

ruby-on-rails - Rails check_box_tag 设置为默认值

ruby-on-rails - 如何将 TZInfo 标识符转换为 Rails 时区名称/键

ruby-on-rails-3 - 我需要直接在 Devise 下的控制台中对用户进行身份验证。我该怎么做?

ruby - 使用 warble 将 Rails 3 应用程序部署到 Tomcat