Rails从表单更新ActiveRecord

djbartos93

我在这里工作的是一个简单的应用程序,需要设置页面,因为我是Rails的新手,我在这里有点迷路了。我想在数据库中设置它,其中一列作为键,一列作为值。我已经在这里进行了一些设置,但是在获取表单以更新设置时遇到了麻烦。

我要做的就是拥有一个设置页面,其中可以更改多个设置。目前,所有设置都将是文本字段。在我当前的代码中,我收到错误“#的未定义方法`to_key'”。所以这是一些代码:

型号:setting.rb

class Setting < ActiveRecord::Base
  def self.method_missing(method_name, *args, &block)
    if method_name[-1] == '='
      handle_set_setting method_name.to_s.delete("="), args.first
    else
      handle_get_setting method_name
    end
  end

  private

  def self.handle_get_setting(name)
    if setting = Setting.find_by(key: name.to_s)
      setting.value unless setting.value.empty?
    else
      nil
    end
  end

  def self.handle_set_setting(name, value)
    if setting = Setting.find_or_create_by(key: name.to_s)
      setting if setting.update(value: value.to_s)
    end
  end
end

这是我的settings_controller.rb(我100%肯定我在这里没有太多正确的地方。)

class SettingsController < ApplicationController
  before_action :set_settings, only: [:edit, :update, :show]
  def index
    @settings = Setting.all
  end

  def new
    @settings = Setting.new
  end


  def update
    @settings.update(params)
  end

  private

     def params
        params.require(:key).permit(:value, :etc)
     end
     def set_settings
       @settings = Setting.find params[:key]
     end

end

这是我的index.html.erb(很确定这是完全错误的)

<h2> Settings </h2>

<h3> Movie Settings </h3>
<%= form_for(@settings) do |f| %>
<%= f.hidden :key => "cp_api" %>
<%= f.label :value %><br>
<%= f.text_field :value %>
<%= f.submit %>
<% end %>

这是错误日志:

Started GET "/settings" for ::1 at 2015-09-18 00:57:24 -0400
Processing by SettingsController#index as HTML
  Setting Load (0.1ms)  SELECT "settings".* FROM "settings"
  Rendered settings/index.html.erb within layouts/application (3.6ms)
Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.1ms)

ActionView::Template::Error (undefined method `to_key' for # <Setting::ActiveRecord_Relation:0x007fa186b88128>):
    1: <h2> Settings </h2>
    2:
    3: <h3> Settings </h3>
    4: <%= form_for(@settings) do |f| %>
    5: <%= f.hidden :key => "cp_api" %>
    6: <%= f.label :value %><br>
    7: <%= f.text_field :value %>
  app/views/settings/index.html.erb:4:in `_app_views_settings_index_html_erb__4580226212883122031_70165864193720'

我确定确实很容易发现问题,但是我在这里真的很迷茫,我已经为这个问题ing了两天了,但我似乎无法解决。

谢谢!

帕万

您需要像下面这样添加@setting = Setting.New到您的index方法中

def index
  @settings = Setting.all
  @setting = Setting.new
end

并更改<%= form_for(@settings) do |f| %>到<%= form_for(@setting) do |f| %>

另外您需要将params方法更改为以下

def params
  params.require(:setting).permit(:value, :key)
end

并更改<%= f.hidden :key => "cp_api" %>为<%= f.hidden_field :key => "cp_api" %>以避免进一步的问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails:新关联的 activerecord 更新

来自分类Dev

我无法更新Rails表单

来自分类Dev

使用Rails中的行更新ActiveRecord

来自分类Dev

Rails 4:使用表单对象时验证关联的ActiveRecord模型

来自分类Dev

Rails嵌套表单不更新嵌套模型

来自分类Dev

嵌套表单Rails字段不会更新

来自分类Dev

Ruby on Rails;表单ID标签不会更新

来自分类Dev

在 Ruby on Rails 表单中更新子关联

来自分类Dev

最终用户更新Rails ActiveRecord模型中的枚举

来自分类Dev

Rails ActiveRecord模型未在RSpec模型规范中更新

来自分类Dev

Rails ActiveRecord不保存更新-但不会引发任何错误

来自分类Dev

如何构建Rails链接,以便单击它会更新ActiveRecord属性

来自分类Dev

Rails ActiveRecord模型未在RSpec模型规范中更新

来自分类Dev

更新与 ActiveRecord rails 5 关联的哈希中的信息

来自分类Dev

从Rails上的表单值红宝石更新模型数据

来自分类Dev

在Rails 4中更新表单后如何传递URL参数

来自分类Dev

Ruby on Rails-填写表单时更新collection_select

来自分类Dev

rails 4 ajax编辑表单无法触发更新

来自分类Dev

Rails更新表单抛出“ nil:NilClass的未定义方法'[]'”

来自分类Dev

使用表单输入而不更新模型Ruby on Rails

来自分类Dev

Rails 5:更新操作不适用于AJAXified表单

来自分类Dev

表单关闭而不更新数据库表 - ruby on rails

来自分类Dev

Rails:仅在表单中指定时更新属性

来自分类Dev

Ruby,ActiveRecord:本地Rails服务器更新记录属性,而远程服务器不更新

来自分类Dev

Ruby on Rails Devise自定义表单-表单未在编辑时更新

来自分类Dev

表单中的 Rails 虚拟属性不从表单或控制台更新数据库

来自分类Dev

提交表单时ActiveRecord :: UnknownAttributeError

来自分类Dev

提交表单时ActiveRecord :: UnknownAttributeError

来自分类Dev

ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法删除或更新父行-Rails 4.2.6

Related 相关文章

  1. 1

    Rails:新关联的 activerecord 更新

  2. 2

    我无法更新Rails表单

  3. 3

    使用Rails中的行更新ActiveRecord

  4. 4

    Rails 4:使用表单对象时验证关联的ActiveRecord模型

  5. 5

    Rails嵌套表单不更新嵌套模型

  6. 6

    嵌套表单Rails字段不会更新

  7. 7

    Ruby on Rails;表单ID标签不会更新

  8. 8

    在 Ruby on Rails 表单中更新子关联

  9. 9

    最终用户更新Rails ActiveRecord模型中的枚举

  10. 10

    Rails ActiveRecord模型未在RSpec模型规范中更新

  11. 11

    Rails ActiveRecord不保存更新-但不会引发任何错误

  12. 12

    如何构建Rails链接,以便单击它会更新ActiveRecord属性

  13. 13

    Rails ActiveRecord模型未在RSpec模型规范中更新

  14. 14

    更新与 ActiveRecord rails 5 关联的哈希中的信息

  15. 15

    从Rails上的表单值红宝石更新模型数据

  16. 16

    在Rails 4中更新表单后如何传递URL参数

  17. 17

    Ruby on Rails-填写表单时更新collection_select

  18. 18

    rails 4 ajax编辑表单无法触发更新

  19. 19

    Rails更新表单抛出“ nil:NilClass的未定义方法'[]'”

  20. 20

    使用表单输入而不更新模型Ruby on Rails

  21. 21

    Rails 5:更新操作不适用于AJAXified表单

  22. 22

    表单关闭而不更新数据库表 - ruby on rails

  23. 23

    Rails:仅在表单中指定时更新属性

  24. 24

    Ruby,ActiveRecord:本地Rails服务器更新记录属性,而远程服务器不更新

  25. 25

    Ruby on Rails Devise自定义表单-表单未在编辑时更新

  26. 26

    表单中的 Rails 虚拟属性不从表单或控制台更新数据库

  27. 27

    提交表单时ActiveRecord :: UnknownAttributeError

  28. 28

    提交表单时ActiveRecord :: UnknownAttributeError

  29. 29

    ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法删除或更新父行-Rails 4.2.6

热门标签

归档