【问题标题】:Creating form for rails-setting为 rails-setting 创建表单
【发布时间】:2014-07-26 17:45:10
【问题描述】:

在我的 Rails 应用程序中,我使用gem rails-settings 来保存用户的电子邮件通知设置。我正在尝试创建一个表单来更新用户的通知设置。它应该由一组复选框组成,用户可以在其中选择他们想要接收电子邮件通知的内容。

在 rails-setting README 中,没有关于如何将其与表单集成的示例。问题中列出了我找到的最接近的教程:

https://github.com/ledermann/rails-settings/issues/46

但我不确定实际的表单元素在我看来会是什么样子。例如,如果我想创建一个看起来像这样的输入:

<input name="settings[email][comments]" type="textbox" value="1">

如何使用 rails 表单助手生成此文件?

【问题讨论】:

    标签: ruby-on-rails ruby forms preferences form-helpers


    【解决方案1】:

    这就是我创建表单的方式。希望这对其他人有帮助。

    edit.html.erb

    <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
       <h4>Email notifications</h4>
       <div>Receive email notifications when</div>
       <div class="notification_settings_container" style="margin-bottom: 30px;">
            <%= fields_for current_user.settings(:email) do |settings_fields| %>
                <div class="notification_checkbox">
                   <%= settings_fields.check_box :comments %> someone comments on my project
                 </div>
                 <div class="notification_checkbox">
                    <%= settings_fields.check_box :followed %> someone follows me
                 </div>
                 <div class="notification_checkbox">
                    <%= settings_fields.check_box :featured %> my projects get featured
                 </div>
                 <div class="notification_checkbox">
                    <%= settings_fields.check_box :remixed %> someone remixes my project
                 </div>
                 <div class="notification_checkbox">
                     <%= settings_fields.check_box :collaborator %> someone adds me as a collaborator on a project
                 </div>
                 <div class="notification_checkbox">
                      <%= settings_fields.check_box :favorited %> someone favorites my project
                 </div>
                 <div class="notification_checkbox">
                      <%= settings_fields.check_box :collectify %> my project gets added to a collection
                 </div>
             <% end %>
       </div>
    
       <%= f.submit "Update", :class=>"btn btn-small btn-info submitButton" %>
    <% end %>
    

    registrations_controller.rb

    class RegistrationsController < Devise::RegistrationsController
      def update
        if params[:rails_settings_setting_object]
                params[:rails_settings_setting_object].each do |key, value|
                    Rails.logger.debug('setting email setting ' + key + 'to ' + value=="1")
                    current_user.settings(:email).update_attributes! key.to_sym => value=="1"
                end
                redirect_to :back, notice: "Update email preferences!"
         end
       end
    end
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多