基于Rails 4中新建和编辑表单的控制器操作的条件

时间:2014-09-15 15:46:27

标签: ruby-on-rails ruby-on-rails-4

我在新视图和编辑视图中呈现了一个表单:

<%= simple_form_for(@course, html: {class: "form-horizontal"}) do |f| %>

由于我的编辑表单应略有不同:simple_form_for([@category, @course]),有没有办法根据控制器操作(编辑或新建)编写条件?

# if controller action is new

<%= simple_form_for(@course, html: {class: "form-horizontal"}) do |f| %>

#if controller action is edit

<%= simple_form_for([@category, @course], html: {class: "form-horizontal"}) do |f| %>

2 个答案:

答案 0 :(得分:3)

您可以使用action_name

<% if action_name == 'edit' %>
  #
<% else %>
  #
<% end %>

或者为了非常安全,还要使用controller_name

<% if controller_name == 'cources' && action_name == 'edit' %>

答案 1 :(得分:2)

您可以使用此代码:

- array_object = @course.new_record? ? [@course] : [@category, @course]

或者

- array_object = action_name == 'new' ? [@course] : [@category, @course]

然后执行以下操作:

<%= simple_form_for(array_object, html: {class: "form-horizontal"}) do |f| %>

了解new_record?辅助方法