我尝试通过表单更新我的设置,但在提交时不会调用更新功能。当我提交时,它会重定向到edit_settings_path,并且不会调用每个服务日志更新。为什么呢?
<%= form_tag settings_path, :method => :put do %>
<p>
<%= label_tag :"settings[:default_email]", "System Administrator" %>
<%= text_field_tag :"settings[:default_email]", Settings['default_email'] %>
</p>
<span class="submit"><%= submit_tag "Save settings" %></span>
<% end %>
控制器
class SettingsController < ApplicationController
def update
params[:settings].each do |name, value|
Settings[name] = value
end
redirect_to edit_settings_path, :notice => "Settings have been saved." }
end
end
**更新**
现在可以正确调用更新(已编辑的控制器)。服务器日志确认Settings Load (0.2ms) SELECT "settings".* FROM "settings" WHERE "settings"."thing_type" IS NULL AND "settings"."thing_id" IS NULL AND "settings"."var" = ':default_email' LIMIT 1
UPDATE "settings" SET "value" = '--- 1111aaa2222...', "updated_at" = '2011-12-18 21:03:21.782075' WHERE "settings"."id" = 2
然而它没有保存到Db并且不知道为什么。我正在使用Rails-settings gem'git://github.com/100hz/rails-settings.git' 不知道在哪里检查,因为它说它更新了记录,但实际上没有。
答案 0 :(得分:0)
为什么使用form_tag方法?
如果您只是想制作标准更新表单,请使用:
<%= form_for(@settings) do |f| %>
FORM CODE
<%= end %>
您的控制器使用edit方法呈现视图和calback的更新方法(与模型交互)
如果你坚持使用
<%= form_tag setting_path, :method => :put do %>
通常情况下,如果您正在处理成员,则使用单数单词;如果您正在处理集合,则使用复数。
fyi:我不知道你的设计是什么样的,但我会有一个模型设置和一个模型settings_item ......