我正在使用rails 3设计,我正在尝试创建一个页面,每个人都可以查看(甚至那些没有注册的页面),但是为注册的人提供了额外的功能.
问题是,当我调用current_user时没有用户,因为我没有使用身份验证!在我的控制器上过滤,因为我希望未注册的用户能够查看它.
如果用户在会话中,如何在没有用户的情况下离开用户,我该如何登录?
我精确地按照Rails入门创建了一个博客.然后我按照这里的教程尝试ActiveAdmin:http://activeadmin.info/documentation.html .
它适用于Post和Tag模型(我登录并创建/添加/编辑了东西)但不是Comment模型.
rails generate active_admin:resource Comment
create app/admin/comments.rb
Run Code Online (Sandbox Code Playgroud)
然后,当我尝试启动服务器时,我得到了这个:
rails server=> Booting WEBrick
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server Exiting /usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin/namespace.rb:116:in
`find_or_build_resource': Tried to
register Comment as Comment but
already registered to Comment
(ActiveAdmin::ResourceMismatchError)
from
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin/namespace.rb:45:in
`register' from
/usr/local/lib/ruby/gems/1.9.1/gems/activeadmin-0.2.2/lib/active_admin.rb:141:in
`register' from
/Users/myusername/Projects/RoR/blog/app/admin/comments.rb:1:in
`<top (required)>' from
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:235:in
`load' from
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:235:in
`block in load' from
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:225:in
`block in load_dependency' from
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:596:in
`new_constants_in' from …Run Code Online (Sandbox Code Playgroud) 我试图在重定向到页面后显示通知但它没有出现.
这是重定向 -
redirect_to :action => :index, :notice => "My redirect"
Run Code Online (Sandbox Code Playgroud)
您可以在网址中看到该消息,但似乎活动管理员中没有任何代码可以显示它.
任何想法如何在活动管理员内呈现它?
我使用admin@example.com//password运行ActiveAdmin,但我想更改这些凭据.谁知道如何改变它们?
我从Rails开始(我也是Python的Ruby -coming的新手),我当前正试图为Rails 3.2.3(Ruby 1.9.3)设置ActiveAdmin.我正在遵循本指南,但我无法正常运行它.当我运行rails s命令访问时,localhost:3000/admin我得到了
NoMethodError in Active_admin/devise/sessions#new
Showing /home/lex/.rvm/gems/ruby-1.9.3-p125/gems/activeadmin-0.4.3/app/views/active_admin/devise/sessions/new.html.erb where line #11 raised:
super: no superclass method `buttons' for #<ActiveAdmin::FormBuilder:0xb429ae0>
Run Code Online (Sandbox Code Playgroud)
我在Google上找不到任何有用的东西,这里有什么问题?
如果您需要有关此例外的更多信息,请告诉我.
Extracted source (around line #11):
8: f.input :password
9: f.input :remember_me, :as => :boolean, :if => false #devise_mapping.rememberable? }
10: end
11: f.buttons do
12: f.commit_button "Login"
13: end
14: end
Run Code Online (Sandbox Code Playgroud) 我已将我的资源标题作为Show动作的链接.现在我想删除该链接表单default_actions.
actions :all, :except => [:show]
Run Code Online (Sandbox Code Playgroud)
不会这样做,因为我需要show采取行动.
我也试过了
column do |show|
links = ''.html_safe
links += link_to "Edit", edit_admin_show_path(show)
links += ' '
links += link_to "Del", admin_show_path(show), :confirm => 'Are you sure?', :method => :delete
links
end
Run Code Online (Sandbox Code Playgroud)
但删除链接不起作用,而是带我到显示页面.
我会感谢任何帮助
我需要在我的活动管理员表单中显示时间选择器.我有一个字段start_time,类型为time.目前我有下拉菜单.

我需要一个类似于日期选择器的选择器,如图所示

用于添加我使用的日期选择器
f.input:start_date,:as =>:datepicker
ActiveAdmin.register PromoCode do
form :html => { :enctype => "multipart/form-data" } do |f|
f.inputs "PromoCodes" do
f.input :promo_code
f.input :start_date, :as => :datepicker
f.input :start_time
end
f.buttons
end
Run Code Online (Sandbox Code Playgroud)
结束
是否有类似的方法来获取活动管理员中的时间选择器.请帮忙.
我正面临一个问题,显示活动管理员中的错误消息.
我收到与表单中的字段一起显示的所有错误消息.但是在下面的代码中,我需要添加至少一项技能和最多5项技能.否则需要抛出错误消息.
我在模型中添加了一个验证:
验证:技能,:length => {:minimum => 1,:maximum => 5,:message =>"应至少为1且小于5"}
这完全验证,但不显示任何错误消息.
任何人都可以帮我显示错误消息.
以下是代码:
form :html => { :enctype => "multipart/form-data" } do |f|
f.inputs "User", :multipart => true do
f.input :name
f.input :email, :as => :email
f.input :profile_name
f.input :date_of_birth
f.input :gender, :as => :select, :collection => Gender::GENDERS
end
f.inputs "Skills* ( minimum 1 & maximum 5 )" do
f.has_many :skills do |p|
if !p.object.nil?
# show the destroy checkbox only if it is an existing appointment
# else, …Run Code Online (Sandbox Code Playgroud) 我有ActiveAdmin和Devise与用户合作.我想使用Devise登录具有相同用户模型的常规非管理员用户.我怎样才能做到这一点?(我想admin在User模型中只为管理员设置一个标志.)我尝试将第二行添加到routes.rb
devise_for :users, ActiveAdmin::Devise.config
devise_for :users
Run Code Online (Sandbox Code Playgroud)
但是当我试图列出路线时它出错了
>rake routes
DL is deprecated, please use Fiddle
rake aborted!
ArgumentError: Invalid route name, already in use: 'new_user_session'
You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here:
http://guides.rubyonrails.org/routing.html#restricting-the-routes-created
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个授权适配器,它只是检查user.admin == true并且对ActiveAdmin运行正常.https://github.com/activeadmin/activeadmin/blob/master/docs/13-authorization-adapter.md
我最近在一个项目中开始使用ActiveAdmin,几乎所有东西都运行良好但是当我将它与friendly_id gem结合使用时遇到了问题.我正在为我的表单[我相信]抛出ActiveRecord :: ReadOnlyRecord,因为friendly_id属性的ID是只读的:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"Rc5PmUYZt3BiLvfPQr8iCPPXlbfgjoe/n+NhCwXazNs=",
"space"=>{"name"=>"The Kosmonaut",
"address"=>"8 Sichovykh Striltsiv 24",
"email"=>"info@somedomain.com"},
"commit"=>"Update Space",
"id"=>"the-kosmonaut"} <--- culprit
Run Code Online (Sandbox Code Playgroud)
我猜最后一行是罪魁祸首,因为它是一个只读属性,它不是我的形式,而是在PATH中
HTTP://本地主机:5000 /管理/空间/的-kosmonaut /编辑
如何通过尝试更新ID来解决此问题?
ActiveAdmin中的表单如下所示:
form do |f|
f.inputs "Details" do
f.input :name
f.input :address
f.input :email
f.input :phone
f.input :website
end
f.inputs "Content" do
f.input :description
f.input :blurb
end
f.buttons
end
Run Code Online (Sandbox Code Playgroud)
更新:这不起作用,所以它不是friendly_id?
我尝试使用@ watson的建议应该有效,但仍然有同样的错误;-(
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"Rc5PmUYZt3BiLvfPQr8iCPPXlbfgjoe/n+NhCwXazNs=",
"space"=>{"name"=>"The Kosmonaut 23"},
"commit"=>"Update Space",
"id"=>"6933"}
Run Code Online (Sandbox Code Playgroud)
HTTP://本地主机:5000 /管理/空间/ 6933 /编辑
当我用record.readonly检查控制台中的记录时?它返回false
更新更新:删除scope_to可以解决问题.
scope_to :current_user, :unless => proc{ current_user.admin? }
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我需要使用scope_to来防止用户看到他们不拥有的记录.我的猜测是(因为我假设scope_to通常与has_many一起使用)我的HABTM关联会导致一些奇怪吗?用户< - HABTM …
ruby-on-rails readonly friendly-id ruby-on-rails-3 activeadmin