Проверьте путь 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 %>