我有一个在Rails 4.1.1应用程序中使用的模块
module A
extend ActiveSupport::Concern
included do
#Some code
end
end
Run Code Online (Sandbox Code Playgroud)
它包含在一个类中
class Some
include A
end
Run Code Online (Sandbox Code Playgroud)
这与伟大工程cache_classes=true在application.rb.现在,如果我关闭类的缓存,我会Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)在启动服务器时获得异常upson.
由于重新加载类是由Rails完成的,应该如何处理这样的问题?
有没有办法在ActiveAdmin的模型索引页面中指定允许的操作,例如:
index do
actions :edit
end
index do
actions only: :edit
end
Run Code Online (Sandbox Code Playgroud)
不工作.什么是正确的语法?
赞赏.
bundle show activeadmin
/home/muichkine/.rvm/gems/ruby-2.1.2/bundler/gems/active_admin-9cfc45330e5a
Run Code Online (Sandbox Code Playgroud) 我需要通过多个名称访问一个路径.在我routes.rb做的
get '/route' => 'controller#edit', :as => 'name_a'
get '/route' => 'controller#edit', :as => 'name_b'
Run Code Online (Sandbox Code Playgroud)
这很好用,但无需加载路由表.根据我对文档的理解,:as在调用时定义一个辅助方法.
所以我去了我的ApplicationController并补充说
alias_method :name_b, :name_a
Run Code Online (Sandbox Code Playgroud)
我删除了第二行 routes.rb
但那失败了 Uncaught exception: undefined method name_a for class ApplicationController
有没有适当的方法为一条路径有两个名字?
=================编辑====================详细说明:
我使用设计的宝石来管理会议,登记,锁定,2种用户等,我们称他们为Admin和Guest.宝石很好,但它要求确定的路线名称行为正常.
就我而言,就设计而言,只有注册过程不同,所以我试图构建一个如下所示的结构:
app
controllers
users
admin
registration_controller.rb
guest
registration_controller.rb
session_controller.rb
password_controller.rb
registration_controller.rb
Run Code Online (Sandbox Code Playgroud)
的Admin和Guest从上述registration_controller其继承的从设计控制器继承.
现在,为了正常工作,Devise需要例如名称guest_user_password以及admin_user_password创建或删除密码检索.在我的情况下,两者都在相同的路径下,所以我希望两个名称重定向到相同的"用户/密码"控制器.
更重要的是,这就是我真正想要的原因.在重定向到密码检索控制器时,我的观点是不应该关心它是否正在处理Admin和Guest路由.两者都是用户,所以我想用user_password它们.
因此我的问题.:)
还要注意,正如我所写,事情有效.我只想尝试写出"最优雅的方式".
我编写了一段代码,将 DataFrame 的各个部分连接到同一个 DataFrame,以便根据特定列规范行的出现。
import random
def normalize(data, expectation):
"""Normalize data by duplicating existing rows"""
counts = data[expectation].value_counts()
max_count = int(counts.max())
for tag, group in data.groupby(expectation, sort=False):
array = pandas.DataFrame(columns=data.columns.values)
i = 0
while i < (max_count // int(counts[tag])):
array = pandas.concat([array, group])
i += 1
i = max_count % counts[tag]
if i > 0:
array = pandas.concat([array, group.ix[random.sample(group.index, i)]])
data = pandas.concat([data, array])
return data
Run Code Online (Sandbox Code Playgroud)
这速度慢得令人难以置信。有没有一种方法可以快速连接 DataFrame 而无需创建它的副本?
有什么区别:
module Mod
def here
puts 'child'
end
end
class A
prepend Mod
def here
puts 'parent'
end
end
Run Code Online (Sandbox Code Playgroud)
和
class A
def here
puts 'parent'
end
end
class B < A
def here
puts 'child'
end
end
Run Code Online (Sandbox Code Playgroud)
或者另一种说法:派生一个类与预先设置孩子代码的模块一样?
我需要能够将文件附加到邮件(使用Mailer)以获取最近上传的文件,该文件未链接到任何模型.
在上传表单的代码中:
<%= form_for(:mail, :url => {:action => 'send_mail'}, :html => {:multipart => true}) do |f| %>
<table summary="send_table">
<tr>
<th>Attachment</th>
<td><%= f.file_field(:attachment) %><a id="attachment"></a></td>
</tr>
</table>
<%= submit_tag "Send!" %>
Run Code Online (Sandbox Code Playgroud)
现在,我在send_mail操作中正在做的事情是这样的:
MyMailer.send_mail(params[:mail][:attachment]).deliver
Run Code Online (Sandbox Code Playgroud)
params [:mail] [:attachment]是使用表单上传的临时文件的路径.怎么能这样做?
这也意味着另一个问题:一旦发送邮件,我应该从temp手动删除文件吗?如果有,怎么样?
这就是事情.我有一个国家模型,有两列"语言"和"default_language".因此,例如,对于瑞士,这些列分别设置为"de,fr,it"和"de".
现在,如果我做Country.languages我得到"de,fr,it"字符串.我怎么能覆盖这个,所以当我得到Country.languages我得到一个数组["de","fr","it"]?
当然我可以创建一个函数def available_languages,但是,我仍然不希望语言公开.
activeadmin ×1
attributes ×1
carrierwave ×1
devise ×1
pandas ×1
python ×1
routes ×1
ruby ×1
rubygems ×1