【问题标题】:Rails 4 forms submitting data as nilRails 4表单提交数据为零
【发布时间】:2013-11-08 22:19:10
【问题描述】:

我有两种我正在使用的表格。一种用于注册,使用devise进行身份验证,第二种用于添加用户cmet。我注意到,当我完成注册过程时,我为名字和姓氏添加的字段在数据库中最终为零。我找到了解决问题的解决方案:

before_filter :configure_devise_params, if: :devise_controller?
  def configure_devise_params
    devise_parameter_sanitizer.for(:sign_up) do |u|
      u.permit(:first_name, :last_name, :profile_name, :email, :password, :password_confirmation)
    end
  end

但是在我的第二种形式中,我在表中添加了一个 user_id 列并将其放入 attr_accessible 中。但是,它显示为 nil。我对 Rails 很陌生,我不确定这是否是类似于第一种形式的问题,还是完全不同的问题。

我在网上找到的所有其他解决方案似乎都指向 attr_accessible,但我认为我在那里很好。所以它必须是别的东西。我还应该在哪里解决这个问题?有其他人经历过吗?

编辑:

第二种形式用于用户 cmets。它看起来像这样:

<%= simple_form_for(@status, html: {class:"form-horizontal"}) do |f| %>
    <%= f.input :user_id %>
    <%= f.input :content %>

    <div class="form-actions">
      <%= f.button :submit %>
    </div>
<% end %>

正在保存内容,但 user_id 为 nil。我最初在表中没有 user_id - 我后来在迁移中添加了它:

class AddUserIdToStatuses < ActiveRecord::Migration
  def change
    add_column :statuses, :user_id, :integer
    add_index :statuses, :user_id
    remove_column :statuses, :name
  end
end

另外,我知道 attr_accessible 是 Rails 3 的一项功能,在 Rails 4 中已被取消。我将 gem 'protected_attributes' 添加到我的 Gemfile 以便我可以使用它,因为我不知道约定是什么对于 Rails 4。我最好摆脱这个吗?如果是这样,我应该做些什么来保护某些输入?

【问题讨论】:

    标签: ruby-on-rails ruby forms devise ruby-on-rails-4


    【解决方案1】:

    如果您在 Rails 4 中使用 protected_attributes,您可能需要禁用强参数。 在 config/application.rb 中:

    config.action_controller.permit_all_parameters = true
    

    然后重启你的服务器

    【讨论】:

      【解决方案2】:

      经过一番研究,我发现 Rails 4 使用 Strong Parameters gem 处理质量分配,它将用户输入移动到控制器。而不是使用

      attr_accessible :first_name, :last_name
      

      在模型中,您可以在应用程序控制器中处理此问题,例如

      def user_params
          params.require(:user).permit(:first_name, :last_name)
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-25
        相关资源
        最近更新 更多