gpt4 book ai didi

ruby-on-rails - 是否可以为简单类创建表单

转载 作者:行者123 更新时间:2023-12-04 05:58:03 25 4
gpt4 key购买 nike

我只想拥有编辑类属性的能力,而这不是 ActiveRecord 类的继承者。

这是我的类(class)/app/model/entry.rb:

class Entry
attr_accessor :title, :body
end

这是一个 Controller :
class DiaryController < ApplicationController
def new
@entry = Entry.new
end
end

这是一个 View :
<%= form_for(@entry) do |f| %>
<%= f.text_field :title %> <br />
<%= f.text_area :body %> <br />
<% end %>

我在打开表单时收到错误消息:

undefined method `model_name' for Entry:Class



这是完整的堆栈:
Extracted source (around line #1):

1: <%= form_for(@entry) do |f| %>
2: <%= f.text_field :title %> <br />
3: <%= f.text_area :body %> <br />
4: <% end %>


Full trace:

activemodel (3.0.6) lib/active_model/naming.rb:95:in `model_name_from_record_or_class'
activemodel (3.0.6) lib/active_model/naming.rb:82:in `singular'
actionpack (3.0.6) lib/action_view/helpers/form_helper.rb:312:in `form_for'
app/views/diary/new.html.erb:1:in `_app_views_diary_new_html_erb___902027577_26033568_187052521'
actionpack (3.0.6) lib/action_view/template.rb:135:in `block in render'
activesupport (3.0.6) lib/active_support/notifications.rb:54:in `instrument'
actionpack (3.0.6) lib/action_view/template.rb:127:in `render'
actionpack (3.0.6) lib/action_view/render/rendering.rb:59:in `block in _render_template'
activesupport (3.0.6) lib/active_support/notifications.rb:52:in `block in instrument'
activesupport (3.0.6) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (3.0.6) lib/active_support/notifications.rb:52:in `instrument'
actionpack (3.0.6) lib/action_view/render/rendering.rb:56:in `_render_template'
actionpack (3.0.6) lib/action_view/render/rendering.rb:26:in `render'
actionpack (3.0.6) lib/abstract_controller/rendering.rb:115:in `_render_template'
actionpack (3.0.6) lib/abstract_controller/rendering.rb:109:in `render_to_body'
actionpack (3.0.6) lib/action_controller/metal/renderers.rb:47:in `render_to_body'
actionpack (3.0.6) lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
actionpack (3.0.6) lib/abstract_controller/rendering.rb:102:in `render_to_string'
actionpack (3.0.6) lib/abstract_controller/rendering.rb:93:in `render'
actionpack (3.0.6) lib/action_controller/metal/rendering.rb:17:in `render'
actionpack (3.0.6) lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render'
activesupport (3.0.6) lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
c:/Ruby192/lib/ruby/1.9.1/benchmark.rb:309:in `realtime'
activesupport (3.0.6) lib/active_support/core_ext/benchmark.rb:5:in `ms'
actionpack (3.0.6) lib/action_controller/metal/instrumentation.rb:40:in `block in render'
actionpack (3.0.6) lib/action_controller/metal/instrumentation.rb:78:in `cleanup_view_runtime'
activerecord (3.0.6) lib/active_record/railties/controller_runtime.rb:15:in `cleanup_view_runtime'
actionpack (3.0.6) lib/action_controller/metal/instrumentation.rb:39:in `render'
actionpack (3.0.6) lib/action_controller/metal/implicit_render.rb:10:in `default_render'
actionpack (3.0.6) lib/action_controller/metal/implicit_render.rb:5:in `send_action'
actionpack (3.0.6) lib/abstract_controller/base.rb:150:in `process_action'
actionpack (3.0.6) lib/action_controller/metal/rendering.rb:11:in `process_action'
actionpack (3.0.6) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.0.6) lib/active_support/callbacks.rb:436:in `_run__776311234__process_action__123531476__callbacks'
activesupport (3.0.6) lib/active_support/callbacks.rb:410:in `_run_process_action_callbacks'
activesupport (3.0.6) lib/active_support/callbacks.rb:94:in `run_callbacks'
actionpack (3.0.6) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.0.6) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.0.6) lib/active_support/notifications.rb:52:in `block in instrument'
activesupport (3.0.6) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (3.0.6) lib/active_support/notifications.rb:52:in `instrument'
actionpack (3.0.6) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.0.6) lib/action_controller/metal/rescue.rb:17:in `process_action'
actionpack (3.0.6) lib/abstract_controller/base.rb:119:in `process'
actionpack (3.0.6) lib/abstract_controller/rendering.rb:41:in `process'
actionpack (3.0.6) lib/action_controller/metal.rb:138:in `dispatch'
actionpack (3.0.6) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.0.6) lib/action_controller/metal.rb:178:in `block in action'
actionpack (3.0.6) lib/action_dispatch/routing/route_set.rb:62:in `call'
actionpack (3.0.6) lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
actionpack (3.0.6) lib/action_dispatch/routing/route_set.rb:27:in `call'
rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:in `block in call'
rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:in `block in recognize'
rack-mount (0.6.14) lib/rack/mount/code_generation.rb:68:in `optimized_each'
rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:in `recognize'
rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:in `call'
actionpack (3.0.6) lib/action_dispatch/routing/route_set.rb:493:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/head.rb:14:in `call'
rack (1.2.2) lib/rack/methodoverride.rb:24:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/flash.rb:182:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/cookies.rb:302:in `call'
activerecord (3.0.6) lib/active_record/query_cache.rb:32:in `block in call'
activerecord (3.0.6) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
activerecord (3.0.6) lib/active_record/query_cache.rb:12:in `cache'
activerecord (3.0.6) lib/active_record/query_cache.rb:31:in `call'
activerecord (3.0.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
activesupport (3.0.6) lib/active_support/callbacks.rb:416:in `_run_call_callbacks'
actionpack (3.0.6) lib/action_dispatch/middleware/callbacks.rb:44:in `call'
rack (1.2.2) lib/rack/sendfile.rb:107:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
railties (3.0.6) lib/rails/rack/logger.rb:13:in `call'
rack (1.2.2) lib/rack/runtime.rb:17:in `call'
activesupport (3.0.6) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.2.2) lib/rack/lock.rb:11:in `block in call'
<internal:prelude>:10:in `synchronize'
rack (1.2.2) lib/rack/lock.rb:11:in `call'
actionpack (3.0.6) lib/action_dispatch/middleware/static.rb:30:in `call'
railties (3.0.6) lib/rails/application.rb:168:in `call'
railties (3.0.6) lib/rails/application.rb:77:in `method_missing'
railties (3.0.6) lib/rails/rack/log_tailer.rb:14:in `call'
rack (1.2.2) lib/rack/content_length.rb:13:in `call'
rack (1.2.2) lib/rack/handler/webrick.rb:52:in `service'
c:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
c:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
c:/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'

是否能够使用 form_for 编辑类属性? -标签?

最佳答案

jdc 回答了这个问题,但没有显示您要求的实际实现。正如 jdc 所说,您需要包含一些 ActiveModel 模块,这将为您的 ruby​​ 类提供所需的功能。

看起来您需要 ActiveModel::Naming 和 ActiveModel::AttributeMethods。

class Entry
extend ActiveModel::Naming
include ActiveModel::AttributeMethods
end

第一行会给你 model_name第二行允许您的模型与表单助手一起运行。您可以使用其他几行:查看 jdc 答案中链接的博客或 Rails API .

更多包含详细信息的链接:

http://www.rubyinside.com/rails-3-0s-activemodel-how-to-give-ruby-classes-some-activerecord-magic-2937.html

http://railscasts.com/episodes/219-active-model

关于ruby-on-rails - 是否可以为简单类创建表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7188137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com