Подтвердить что ты не робот

Rails: как определить контроллер/действие в поле зрения

Это моя форма частичная:

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

Как я могу это достичь?

4b9b3361

Ответ 1

В общем случае форма частичная содержит только поля, а не тег формы или поля, но если у вас нет другого пути, вы всегда можете увидеть, что в настоящее время установлено и работает ли params[:action].

Ответ 2

current_page?(action: 'edit')

См. ActionView:: Helpers:: UrlHelper # current_page?

Rails также позволяет использовать методы controller_path, controller_name, action_name для использования в представлении.

Ответ 3

Вы можете написать что-то вроде

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

Надеюсь, что это поможет.

Ответ 4

Просто используйте @_controller.action_name в представлении