0
既存のフィールドの値を表示しないform_tag私はこのような設定コントローラのセットアップました:Railsは
class Admin::SettingsController < ApplicationController
def index
@settings = Setting.all
end
def update
setting_params.each do |key, value|
Setting.where(key: key).first.update_attribute :value, value
end
redirect_to admin_settings_path, notice: "Settings saved."
end
private
def setting_params
params.require(:settings).permit(:site_title, :site_desc)
end
end
indexアクションは、関連するパス内のビューファイルを持って次のように、そのコードは次のとおりです。
<h1>Settings</h1>
<%= form_tag admin_settings_path, method: "put" do %>
<p>
<label>Site Title:</label>
<%= text_field_tag "settings[site_title]" %>
</p>
<p>
<label>Site Description:</label>
<%= text_field_tag "settings[site_desc]" %>
</p>
<p>
<%= submit_tag "Save settings" %>
</p>
<% end %>
これで、これらのフィールドのデータを関連するモデルに保存/更新でき、レールコンソールにコマンドSetting.all
でデータが表示されます。しかし、問題は、設定インデックスページをリロードしたときにフォームを介してレコードを保存した後に、フォームが空白で、以前にフィールドに保存された値が表示されないということです。
私はここで間違っていますか?
は、我々はform_tagヘルパーを持つフィールドの値を永続化することはできません。第2に、@setting変数でform_forヘルパーを使用しようとしましたが、 "フォームの最初の引数にはnilを含めることはできません。 –