Ответ 1
В общем случае форма частичная содержит только поля, а не тег формы или поля, но если у вас нет другого пути, вы всегда можете увидеть, что в настоящее время установлено и работает ли params[:action]
.
Это моя форма частичная:
<%= f.simple_fields_for :photo_attributes, :html => { :multipart => true } do |d| %>
<%= d.label :image, :label => 'Upload logo', :required => false %>
<%= d.file_field :image, :label => 'Image, :required => false', :style => 'margin-bottom:2px' %>
<%= d.input :image_url, :label => 'Billed URL', :required => false %>
<% end %>
Если действие редактируется, я хочу показать это вместо:
<%= f.simple_fields_for :photo, :html => { :multipart => true } do |d| %>
<%= d.label :image, :label => 'Upload logo', :required => false %>
<%= d.file_field :image, :label => 'Image, :required => false', :style => 'margin-bottom:2px' %>
<%= d.input :image_url, :label => 'Billed URL', :required => false %>
<% end %>
Как я могу это достичь?
В общем случае форма частичная содержит только поля, а не тег формы или поля, но если у вас нет другого пути, вы всегда можете увидеть, что в настоящее время установлено и работает ли params[:action]
.
current_page?(action: 'edit')
См. ActionView:: Helpers:: UrlHelper # current_page?
Rails также позволяет использовать методы controller_path
, controller_name
, action_name
для использования в представлении.
Вы можете написать что-то вроде
<%- form_url = @object.new_record? ? :photo_attributes : :photo %>
<% f.simple_fields_for form_url, :html => { :multipart => true } do |d| %>
То есть, если у вас есть @object
для проверки. В противном случае вы можете использовать action_name
(и даже controller_name
).
Так что-то вроде:
<%- form_url = action_name == :edit ? :photo : :photo_attributes %>
<% f.simple_fields_for form_url, :html => { :multipart => true } do |d| %>
Надеюсь, что это поможет.
Просто используйте @_controller.action_name в представлении