Я использую Devise и Active Admin, и до сих пор играли вместе.Вместо того, чтобы использовать Active Admin по умолчанию «AdminUser», я использую свою собственную модель «User», которую в моем приложении иногда называют «Автор».
Я создаю форму Статьи (Создать /Обновить), и у меня есть поле выбора пользователя, которое предварительно выбрано, если запись является обновлением , но не, если это новая запись . Что я хочу сделать, это если яя создаю новую запись , использую Devise 'current_user'. Так как ActiveAdmin использует Formtastic, я нашел это: https://github.com/justinfrench/formtastic/wiki/Deprecation-of-%3Aselected-option,, который в основном объясняет, что это может быть функция, но это можетлучше всего добиться с фильтром до, вот где я в тупике.
Вот мой вид формы:
<%= semantic_form_for [:admin, @article] do |f| %>
<%= f.inputs "Details" do %>
<%= f.input :title %>
<%=
f.input :user, :as => :select, :label => 'Author',
:collection => User.all, :include_blank => false,
:required => true
%>
<%=
f.input :categories, :as => :check_boxes, :label => 'Categories',
:collection => Category.all, :include_blank => 'None',
:hint => 'Choose all categories that apply.',
:required => false
%>
<%= f.input :desc, :label => 'Description' %>
<%= f.input :content, :label => 'Content' %>
<% end %>
<%= f.buttons %>
<% end %>
Я могу предварительно выбрать current_user используя jQuery, что-то вроде этого:
<script type="text/javascript">
$(document).ready(function() {
$('#article_user_id').val(<%= current_user.id %>);
});
</script>
, но это переопределяет выбранного пользователя в представлении «Редактировать», в котором автор / пользователь уже назначен ... и это также не похоже наRails way ...
Редактировать: Я нашел это: Активный администратор: настраивайте только новую форму
Итак, исходя из этого, на мой взгляд, я определяю, является ли статья новой записью или нет, и если это так, я оборачиваю javascript так, чтобы она получалаположить на страницу для новых статей.Таким образом, при обновлении статьи пользователь все еще выбирается.
<% if controller.action_name == 'new' %>
<script type="text/javascript">
$(document).ready(function() {
$('#article_user_id').val(<%= current_user.id %>);
});
</script>
<% end %>
Опять же, я не думаю, что это самое элегантное решение, поэтому, если у кого-то есть какие-либо комментарии по поводу лучшего способа (который я 'я уверен, что есть), пожалуйста, дайте мне знать!