gpt4 book ai didi

ruby-on-rails - 在用户选择框中使用设计当前用户作为默认用户

转载 作者:行者123 更新时间:2023-12-04 05:53:30 24 4
gpt4 key购买 nike

我正在使用 Devise 和 Active Admin,到目前为止,它们一起玩得很好。我没有使用默认的 Active Admin“AdminUser”,而是使用我自己的“用户”模型,有时在我的应用程序中将其称为“作者”。

我正在创建一个文章表单(创建/更新),并且我有一个用户选择框,如果记录是更新,则预先选择该框,但如果它是新记录,则不会。我想要做的是,如果我要创建新记录,请使用设计''current_user'。由于 ActiveAdmin 使用的是 Formtastic,我发现了这个:https://github.com/justinfrench/formtastic/wiki/Deprecation-of-%3Aselected-option ,这基本上解释了这可能是一个即将推出的功能,但这可能最好使用 before 过滤器来实现,这就是我现在难倒的地方。

这是我的表单 View :

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

我可以使用 jQuery 预先选择 current_user,如下所示:
<script type="text/javascript">
$(document).ready(function() {
$('#article_user_id').val(<%= current_user.id %>);
});
</script>

但这会覆盖“编辑” View 中的选定用户,其中已经分配了作者/用户......而且它似乎也不像 Rails 方式......

编辑:
我找到了这个:
Active Admin: Customize only new form

因此,基于此,在我看来,我确定文章是否为新记录,如果是,我将 javascript 包装起来,以便将其放在新文章的页面上。这样,在文章更新时,用户仍被选中。
<% if controller.action_name == 'new' %>
<script type="text/javascript">
$(document).ready(function() {
$('#article_user_id').val(<%= current_user.id %>);
});
</script>
<% end %>

同样,我认为这不是最优雅的解决方案,所以如果有人对更好的方法有任何意见(我确定有),请告诉我!

最佳答案

在 Controller 中使用 before_filter ...

controller do
before_filter :assign_user, :only => :new

private

def assign_user
resource.user = current_user
end
end

这样,当您的表单呈现时,@article 将已经通过调用资源方法(在您的情况下引用 @article)填充了用户 ID。

关于ruby-on-rails - 在用户选择框中使用设计当前用户作为默认用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com