it-swarm.com.ru

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

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

27
Rails beginner

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

28
tadman

current_page?(action: 'edit')

Смотрите ActionView :: Helpers :: UrlHelper # current_page?

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

96
fny

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

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

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

8
nathanvda

Rails 5: Действие отображения в представлении

<%= action_name %>

Если заявление в представлении

<% if action_name == "edit" %>
  This is an edit action.
<% end %>
5
thedanotto

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

0
Arugin