我有这种情况,我无法弄清楚如何使它工作。我有一个设置模型。该模型有两个字段,键和值。因此,对于我需要添加到rails应用程序的每个新设置,我只需使用键和我想要的值创建一个新的设置模型。
我正在使用ActiveAdmin,我需要创建一个允许我同时编辑所有键的表单,这意味着从同一个表单同时编辑设置(Setting.all)中的所有模型。
所以我在尝试编辑时能够渲染自定义部分,但问题是我无法找到文档或任何有关如何同时编辑所有内容的信息。我也一直在阅读关于formtastic,没有运气:(
任何线索?!?!
答案 0 :(得分:3)
我的猜测是,您最好先编写自定义视图,然后添加自定义操作。
以下是它的样子:
应用程序/管理/ 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
应用程序/视图/管理/ 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会更简单。