Проверьте путь URL с помощью ruby ​​на рельсах

В моем проекте я использовал gems: rails admin, cancancan и devise. Когда я установлю пакет, будет добавлено множество представлений. Я добавил "can:crud, [xxxx, xxxxx]", чтобы иметь CRUD в моей модели способностей.

Вопрос: Как я могу проверить текущий путь в моем представлении? потому что я хочу отключить какое-то поле. Пример: я нахожусь в новом методе пути и у меня есть 3 поля для этого (тогда я нажал кнопку отправить / создать, теперь это будут добавленные данные). Я нажал кнопку редактирования, тогда там одно поле будет отключено.

Примечание. Обе формы нового пути и пути редактирования находятся в одном и том же файле (activity_types/_form.html.erb).

Посмотреть

_form.html.erb

  <% if current_page?(new_activity_type_path) %>
  <div class="field">
    <%= f.label :name %>
    <%= f.text_field :name %>
  </div>
<% else %>
  <div class="field">
    <%= f.label :"name" %>
    <%= f.text_field :name, disabled: true %>
  </div>
 <% end %>


  <div class="field">
    <%= f.label :description %>
    <%= f.text_field :description %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>

3 ответа

Решение

Если вы хотите провести различие между редактированием и новыми действиями в представлении, то

<% if params[:action] == "new" %>
  ...
<% elsif params[:action] == "edit" %>
  ...
<% end %>

ИЛИ ЖЕ

  <div class="field">
    <%= f.label :name %>
    <% if params[:action] == "new" %>
      <%= f.text_field :name %>
    <% else %>
      <%= f.text_field :name, disabled: true %>
    <% end %>
  </div>

  <div class="field">
    <%= f.label :description %>
    <%= f.text_field :description %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>

Вы можете проверить действие следующим образом:

if params[:action] == "new"
 # doing something
elsif params[:action] == "edit"
 # doing something
end

Я бы установил переменную экземпляра в вашем new а также edit методы в вашем контроллере, следя за этим, проверив значение в вашей форме.

пример:

def new
  @whereAmI = "new"
end

def edit
  @whereAmI = "edit"
end

По мнению:

<% if @whereAmI == "edit" %>
  <%= f.text_field :name, disabled: true %>
<% elsif @whereAmI == "new" %>
  <%= f.text_field :name %>
<% end %>
Другие вопросы по тегам