2011-12-17 8 views
1

フォームを使用して設定を更新しようとしましたが、送信時に更新機能が呼び出されません。私はサブミットすると、それはサーブごとのログ更新が呼び出されていないので、edit_settings_pathにリダイレクトします。どうして?railsフォームの更新メソッドが呼び出されない

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

**更新** Updateが正しく(編集済みコントローラ)と呼ばれています。サーバーログの確認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設定のgem 'git://github.com/100hz/rails-settings.git'を使用しています。 更新されたレコードだが実際にはないのでチェックする場所は分かりません。

+0

...私はあなたのデザインがどのようなものであるか知らないが、私はモデルの設定やモデルsettings_itemを持っているでしょうか? – clyfe

+0

私は 'resource:settings'を持っています。 *サーバーログの設定負荷(0.2ms)のSELECT設定に従って更新されます。* FROM "settings" WHERE "settings"。 "thing_type"がNULLで、 "settings"。 "thing_id"がNULLで、 "settings" = ":1111aaa2222 ..."、 "updated_at" = '2011-12-18 21:03:21.782075'ここでは、 'var' = ':default_email' LIMIT 1 (0.3ms) "設定" "id" = 2 'しかし、Dbには保存されません – Gaelle

+0

あなた自身を保存する必要があります –

答えて

0

なぜform_tagメソッドを使用していますか?

あなただけの標準的な更新フォームを作成しようとしている場合には、使用:

<%= form_for(@settings) do |f| %> 
     FORM CODE 
<%= end %> 

お使いのコントローラがcalbackためのビューおよび更新方法をレンダリングするために編集メソッドを使用しています

(モデルと対話します)

あなたが共同で作業している場合は、メンバーと複数で作業している場合は、通常は、単数形の単語を使用することになり

<%= form_tag setting_path, :method => :put do %> 

を使用して主張する場合llection。

はFYI:あなたは、ルータに応じてルートを設定しました

+0

フォームは少なくとも修正されましたが、今は保存されません。 rails-setting gemを使ってデータを "垂直"に格納する。参加いただきありがとう – Gaelle

関連する問題