метод обновления формы рельсов не вызван - PullRequest
1 голос
/ 18 декабря 2011

Я пытаюсь обновить свои настройки через форму, но функция обновления не вызывается при отправке.Он перенаправляет на 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

Однако он не сохраняется в БД и понятия не имеет, почему.Я использую гем Rails-settings 'git: //github.com/100hz/rails-settings.git' Не знаю, где проверить, так как там написано, что обновленная запись, но на самом деле нет.

1 Ответ

0 голосов
/ 18 декабря 2011

почему вы используете метод form_tag?

Если вы просто пытаетесь создать стандартную форму обновления, используйте:

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

Ваш контроллер использует метод edit для визуализации представления и метод обновления для обратного вызова (для взаимодействия с моделью)

Если вы настаиваете на использовании

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

Обычно вы используете единственное слово, если вы работаете над элементом, и множественное число, если вы работаете над коллекцией.

К вашему сведению: я не знаю, на что похож ваш дизайн, но у меня были бы настройки модели и модель settings_item ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...