【问题标题】:ActiveAdmin edit multiple models in the same custom form loaded from a partialActiveAdmin 在从部分加载的同一自定义表单中编辑多个模型
【发布时间】:2014-10-02 03:57:50
【问题描述】:

我有这种情况,我不知道如何使它工作。我有一个设置模型。该模型有两个字段,键和值。因此,对于我需要添加到我的 rails 应用程序的每个新设置,我只需使用我想要的键和值创建一个新的设置模型。

我正在使用 ActiveAdmin,我需要创建一个表单,让我可以同时编辑所有键,这意味着从同一表单同时编辑设置 (Setting.all) 中的所有模型.

所以我在尝试编辑时能够呈现自定义部分,但问题是我找不到文档或任何与如何同时编辑所有相关的信息。另外我一直在阅读有关formtastic的文章,但没有运气:(

有什么线索吗?!?!

【问题讨论】:

    标签: ruby-on-rails activerecord activeadmin formtastic


    【解决方案1】:

    我猜你最好编写一个自定义视图并添加自定义操作。

    这是它的样子:

    app/admin/settings.rb

    ActiveAdmin.register Setting do
      ...
      # Add a link on the index page to go the edit all page
      action_item :only => :index do
        link_to 'Edit Settings', :action => :edit_settings
      end
    
      member_action :edit_settings do
        @settings = Setting.all
      end
    
      member_action :update_settings, :method => 'post' do
        params[:settings].each do |setting_params|
          setting = Setting.find(settings_params[:id]
          setting.key = settings_params[:key]
          setting.value = settings_params[:value]
          setting.save
        end
      end
    
      ...
    end
    

    app/views/admin/edit_settings

    <form action="/admin/update_settings" method="POST">
        <% @settings.each do |setting| %>
            <div>
                <input id="setting_id_<%= "#{setting.id}" %>" name="settings[][id]" value="<%= setting.key %>" type="hidden" />
                <div>
                    <label for="setting_key_<%= "#{setting.id}" %>">Setting key</label>
                    <input id="setting_key_<%= "#{setting.id}" %>" name="settings[][key]" value="<%= setting.key %>" type="text" />
                </div>
                <div>
                    <label for="setting_value_<%= "#{setting.id}" %>">Setting value</label>
                    <input id="setting_value_<%= "#{setting.id}" %>" name="settings[][value]" value="<%= setting.value %>" type="text" />
                </div>
            </div>
        <% end %>
        <input type="submit" value="Submit" />
    </form>
    

    请注意,可能有一种方法可以使用 formtastic 编写此表单,尽管我发现有时编写一些基本的 html 更简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多