2

我正在安装Engage!

我按照此处的安装说明进行操作:http: //engagecsm.com/readme

我做的安装步骤:

  1. 添加参与!到应用程序的 Gemfile:gem 'engagecsm'。
  2. 安装它:捆绑安装。
  3. 运行生成器:rails generate 参与用户。
  4. 运行迁移:rake db:migrate。

现在,我可以去 localhost:3000/engage

做的结果图片

这是显示的内容:

这是订婚的照片! 论坛,我在其中输入了要用于创建新主题的数据。 有一个

现在,当我点击“创建主题”时,网站上什么也没有发生。我查看我的 Rails 服务器控制台,我看到了这个:(更容易在此处查看http://i.stack.imgur.com/xKBER.png,在底部找到完整的堆栈跟踪)

开始 POST

所以我开始用谷歌搜索,我看到这样的事情:

我已经将 attr_accessible :user 添加到我的用户模型中,但这不起作用。

这是我的用户模型:

class User < ActiveRecord::Base include Engage::Extensions::User has_many :resources has_many :resource_views, :class_name => 'UserResourceView' has_many :viewed_resources, :through => :resource_views, :source => :resource has_many :evaluations,班级名称:

另外,我看不到我如何访问 Engage 模型等,请参阅这里的目录:

我的目录列表:控制器、助手、模型和视图。 其中没有一个是特定于 Engage 的。 我找不到 Engage 的控制器等在哪里。 它在宝石中。

有谁知道如何解决这一问题?如果您需要任何其他信息,请告诉我,我将提供屏幕截图。

任何帮助是极大的赞赏。谢谢!

编辑 #1 - 添加应用程序控制器图片和完整堆栈跟踪

这是我唯一可以通过 Engage 看到任何东西的地方!在控制器中(此时我没有用户控制器)

application_controller.rb 文件。 类 ApplicationController < ActionController::Base 包括 Engage::Extensions::Helpers protect_from_forgery end

这是完整的堆栈跟踪:

开始 POST SQL (0.9ms) 插入

activesupport (3.2.11) lib/active_support/callbacks.rb:215:in <code>block in _conditional_callback_around_4085' activesupport (3.2.11) lib/active_support/callbacks.rb:326:in</code>around' activesupport (3.2 .11) lib/active_support/callbacks.rb:310:in <code>_callback_around_127' activesupport (3.2.11) lib/active_support/callbacks.rb:214:in</code>_conditional_callback_around_4085' activesupport (3.2.11) lib/ active_support/callbacks.rb:414:in <code>_run__2010401100414174750__process_action__2035169522325419882__callbacks' activesupport (3.2.11) lib/active_support/callbacks.rb:405:in</code>__run_callback' activesupport (3.2.11) lib/active_support/callbacks.rb :385:in <code>_run_process_action_callbacks'activesupport (3.2.11) lib/active_support/callbacks.rb:81:in</code>run_callbacks' actionpack (3.2.11) lib/abstract_controller/callbacks.rb:17:in <code>process_action' actionpack (3.2.11) lib/action_controller/metal/rescue.rb:29:in</code>process_action' actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:30:in <code>block in process_action' activesupport (3.2.11) lib/active_support/notifications.rb:123:in</code>block in instrument' activesupport (3.2.11) lib/active_support/notifications/instrument.rb:20:in <code>instrument' activesupport (3.2.11) lib/active_support/notifications.rb:123:in</code>instrument' actionpack (3.2 .11) lib/action_controller/metal/instrumentation.rb:29:in <code>process_action' actionpack (3.2.11) lib/action_controller/metal/params_wrapper.rb:207:in</code>process_action'activerecord (3.2.11) lib/active_record/railties/controller_runtime.rb:18:in <code>process_action' actionpack (3.2.11) lib/abstract_controller/base.rb:121:in</code>process' actionpack (3.2 .11) lib/abstract_controller/rendering.rb:45:in <code>process' actionpack (3.2.11) lib/action_controller/metal.rb:203:in</code>dispatch' actionpack (3.2.11) lib/ action_controller/metal/rack_delegation.rb:14:in <code>dispatch' actionpack (3.2.11) lib/action_controller/metal.rb:246:in</code>block in action' actionpack (3.2.11) lib/action_dispatch /routing/route_set.rb:73:in <code>call' actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in</code>dispatch' actionpack (3.2.11) lib/action_dispatch/ routing/route_set.rb:36:in <code>call' 旅程 (1.0.4) lib/journey/router.rb:68:in</code>block in call' Journey (1.0.4) lib/journey/router.rb:56:in <code>each' Journey (1.0.4) lib /journey/router.rb:56:in</code>call' actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in <code>call' railties (3.2.11) lib/rails/ engine.rb:479:in</code>call' railties (3.2.11) lib/rails/railtie/configurable.rb:30:in <code>method_missing' Journey (1.0.4) lib/journey/router.rb :68:in</code>block in call' 旅程 (1.0.4) lib/journey/router.rb:56:in <code>each' 旅程 (1.0.4) lib/journey/router.rb:56:在</code>call'actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in <code>call'warden (1.2.1) lib/warden/manager.rb:35:in</code>代码>阻止调用'warden (1.2.1) lib/warden/manager.rb:34:in <code>catch'warden (1.2.1) lib/warden/manager.rb:34:in</code>call' actionpack (3.2.11) lib/action_dispatch/middleware/best_standards_support.rb:17:in <code>call' rack (1.4.3) lib/rack/etag.rb:23:in</code>call' rack (1.4.3) lib/rack/conditionalget.rb:35:in <code>call' actionpack (3.2.11) lib/action_dispatch/middleware/head.rb:14:in</code>call' actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in 'call'11) lib/action_dispatch/middleware/head.rb:14:in</code>call' actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in 'call'11) lib/action_dispatch/middleware/head.rb:14:in</code>call' actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in 'call'

actionpack (3.2.11) lib/action_dispatch/middleware/flash.rb:242:in <code>call' rack (1.4.3) lib/rack/session/abstract/id.rb:210:in</code>context ' rack (1.4.3) lib/rack/session/abstract/id.rb:205:in <code>call' actionpack (3.2.11) lib/action_dispatch/middleware/cookies.rb:341:in</code> call' activerecord (3.2.11) lib/active_record/query_cache.rb:64:in <code>call' activerecord (3.2.11) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in</code>call ' actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:28:in <code>block in call' activesupport (3.2.11) lib/active_support/callbacks.rb:405:in</code>_run__4377122496359715927__call__4128007891844716680__callbacks' activesupport (3.2.11) lib/active_support/callbacks.rb:405:in <code>__run_callback' activesupport (3.2.11) lib/active_support/callbacks.rb:385:in</code>_run_call_callbacks' activesupport (3.2.11) lib/active_support/callbacks.rb:81:in <code>run_callbacks' actionpack (3.2 .11) lib/action_dispatch/middleware/callbacks.rb:27:in</code>call' actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:65:in <code>call' actionpack (3.2. 11) lib/action_dispatch/middleware/remote_ip.rb:31:in</code>call' actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in <code>call' actionpack (3.2.11 ) lib/action_dispatch/middleware/show_exceptions.rb:56:in</code>call' railties (3.2.11) lib/rails/rack/logger.rb:32:in <code>call_app' railties (3.2.11) lib/rails/rack/logger.rb:16:in</code>block in call'activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in <code>tagged' railties (3.2.11) lib/rails/rack/logger.rb:16:in</code>call' actionpack (3.2 .11) lib/action_dispatch/middleware/request_id.rb:22:in <code>call' rack (1.4.3) lib/rack/methodoverride.rb:21:in</code>call' rack (1.4.3) lib/rack/runtime.rb:17:in <code>call' activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in</code>call' rack (1.4.3) lib /rack/lock.rb:15:in <code>call' actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in</code>call' railties (3.2.11) lib/rails/ engine.rb:479:in <code>call' railties (3.2.11) lib/rails/application.rb:223:in</code>call' rack (1.4.3) lib/rack/content_length.rb:14 :in <代码>调用'railties (3.2.11) lib/rails/rack/log_tailer.rb:17:in</code>call' rack (1.4.3) lib/rack/handler/webrick.rb:59:in <code>service' /用户/johndoe/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/webrick/httpserver.rb:138:in</code>service' /Users/johndoe/.rbenv/versions/ 1.9.3-p327-perf/lib/ruby/1.9.1/webrick/httpserver.rb:94:in <code>run' /Users/johndoe/.rbenv/versions/1.9.3-p327-perf/lib/ ruby/1.9.1/webrick/server.rb:191:in</code>block in start_thread'运行'/Users/johndoe/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/webrick/server.rb:191:in</code>block in start_thread'运行'/Users/johndoe/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/webrick/server.rb:191:in</code>block in start_thread'

编辑#2 - 添加参与环境:

此外,我们还安装了 Devise(我相信还有 OmniAuth……)。因此,我们有“current_user”,但我不知道我们是否有“用户名”或“电子邮件”方法,除非这是 Devise 或其他东西的标准 这是engage.rb 文件。 Engage.configure 做 |config|  config.layout = 'application' config.user_model = 'User' config.mailer_sender = 'engage@knowledgethief.com' config.internal_authentication = false config.current_user_method = Proc.new { current_user } config.login_link = { :path => : new_user_session_path, :opts => { :remote => true } } config.username_method = Proc.new { username } config.email_method = Proc.new { email } end

编辑#3 - 正如 Geoff 建议的那样,我查看了 topic_controller 的第 46 行。该行如下:

@topic.votes.create(:user =>engage_current_user)

4

4 回答 4

1

这是订婚之一!开发商在这里。我可以看到 Engage 有两个问题!如上所述。

我们已经找到了第一个(您已经解决的那个attr_accessible :user)的解决方案,所以期待 Rubygems 的更新很快。

第二个(主题实际上并未显示在索引页面上的事实)与 cancan gem 中的更改有关。我们仍然需要找出解决这个问题的最佳方法,但一个快速的解决方法是在 Gemfile 中锁定 cancan 版本,如下所示gem 'cancan', '1.6.7'

我们将在 Rubygems 上发布解决这些问题的更新时通知您。

干杯!

于 2013-01-21T15:36:23.780 回答
1

根据所提供的信息,恐怕我不知道发生了什么,但我可以帮助对您遇到的错误进行一些解释。

跟踪中的最后一个非库行是:

engagecsm (1.0.8) app/controllers/engage/topics_controller.rb:46:在“创建”中

此代码可能在您的默认 gem 路径中。可能/usr/lib/ruby/gems或者/home/user_name/.gem/ruby如果你在 *nix 上。

在处理那行代码的某个时候,它遇到了批量分配安全错误。

它可能会帮助您查看该行代码以了解它所击中的模型。不要在这里发布那行代码。Engage 的许可证!似乎不是标准的开源之一,如果您在此处发布,您可能违反了许可。我很可能是错的,但安全总比抱歉好。

有两个变量可以使您因批量分配安全性而绊倒。它们是属性和角色。attr_accessible :user仅当他们使用默认角色时,添加到适当的模型才会有所帮助。如果他们正在使用该:admin角色,那么您需要添加attr_accessible :user, as: :admin. 我认为您的User模型没有属性,:user因此可能需要将其添加到其他地方。

如果我不得不猜测你做错了什么,我想你可能已经遵循了这里的安全指南:

http://guides.rubyonrails.org/security.html

在该指南中,他们建议将您的配置设置为默认将所有内容列入白名单。

config.active_record.whitelist_attributes = true

如果您这样做并参与!没有使用 MassAssignment 支持编写,这可以解释您看到的错误。

抱歉,我无法确定地解释您的问题,但我希望它仍然对您有所帮助。

于 2013-01-20T05:13:27.427 回答
1

查看您堆栈跟踪的问题在 topices_controller 中 - 因此可能意味着您需要添加:user_id到模型中attr_accessibleEngage/Topic

于 2013-01-20T18:15:34.693 回答
0

我需要将以下行添加到参与/投票模型

attr_accessible :user

现在它会说“主题成功创建”。

但是,我看不到列出的主题。但是,我相信我已经解决了这部分问题。我去的时候可以看到主题

http://localhost:3000/engage/topics/1
于 2013-01-21T03:38:00.807 回答