【问题标题】: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 更简单。