@help5305fff , see you~~
惨啊,搬家断了网。到现在才在朋友家上线了。报个名啊~~~
ruby 1.9.x 里:p = ->(x){ x + 1}
等同于p = lambda {|x| x+ 1}
inherited_resources 已经在 README 里已经放出了deprecation notice了,直接推荐使用 responders.
**Deprecation notice**
Since Rails 3 came out, I have no longer used Inherited Resources. I have found that the responders abstraction and custom Rails generators offer the perfect balance between hiding and showing too much logic. That said, I suggest developers to make use of the responders gem (at github.com/plataformatec/responders) and no longer use Inherited Resources.
views 若真的不想复写,可以通过 render 的方式来避免. 按你的例子,如果你想复用 topics 的 show 页面,可以在 movies/show.html.erb 中直接 render :file => 'topics/show'.
X~~~ 现在才发现是一个月前的问题! 应该早就找到解决办法了吧。:)
active admin 现在有没有内置的这种功能我不知道呢。 我有个项目用的 active_admin + paperclip 来做的多图片上传。 用户在上传产品之前你并不知道他想传多少张图上去。 因此,默认生成 3 file fields for uploading image. 后台有个“add new image" 按钮,点击后即可添加一个新的图片上传选择框。 active admin 的 form 是自动生成的。这种情况下,可以 render 那个用于添加上传图片的 Snippet. ActiveAdmin.register Post do form :partial => "form" end 而后即可在 app/views/admin/posts/_form.html.erb 就可以随意编写这个 Form.在这里就可以随意写,就像你平常使用 rails form,使用 simple_form 之类的也可以。 到了这一步,就可以脱离 active admin 随意按以前的方案来写了。 至于像我之前那个使用“add new image“添加还是直接拖图片上传。就是 js 怎么写的问题了。再去 google 的时候,就不用再以 active_admin 为前缀了。这里可搜索到的解决方案应该是大把大把地...
Try this:
ActiveAdmin.register_page "My Page" do
action_item do
link_to "View Site", "/"
end
content do
para "Hello World"
end
end
Check the Document:http://www.activeadmin.info/docs/9-custom-pages.html#add_an_action_item
#3 楼 @nightire ,@files = Dir.glob("*"),测试过了。木有问题啊。可以考虑设置一下绝对路径。 如 Dir.glob("#{Rais.root}/app/views"); 具体参见:http://ruby-doc.org/core-1.9.3/Dir.html#method-c-glob
我写的第一个网站程序也是个论坛。PHP,照着书写的。 因为是个文科生,课余时间自学。 不知道 IDE,不知道编辑器。 书上说可以用 windows 自带的 notepad。 于是我就用记事本来搞。 HTML, php, SQL 语句混杂在一起。逻辑一层套着一层。 ...木有语法高亮,木有自动对齐,木有自动补全... 结果还真搞出来了。 那真是个吐血三升的时代。
使用继承是出于这样一种考虑: 我个人在做些小公司的项目时,经常会碰到的事情是 products,supports,news,serivces 之类的 resources 都会有其分类。 category 只有一个 name 字段,一个 position 字段,为每一种资源新建一个 scaffold,如为 products 新建 ProductCategory.这样会成生大量的重复的 MVC 文件,实在是不可忍。 因此,出于 rubist 的本能,选择的是将它们全部 blongs_to 到 category。这时就会发现查找时会有困难。比如说,新建 products 页面时,一般会提供一个下拉框给用户选择 product 所属的类。这个下拉框里的可选 categories list 应当如何查找生成?
同时还有多级分类的问题。比如说,产品要分为一级分类,其下有二级分类,再往下....。当然,这样相当不好。但是往往会碰到这样的要求。 于是只有去对 category 做 self join...
....呃,说着说着我自己都觉得有点乱了。:)
应该是以rails g controller cpanel::topics xxx:string xxxx:integer
的形式生成的吧。当然,具体的逻辑还是得自己去 controller, routes 里去修改。
#5 楼 @Rei ,我帖上我的解决方案吧。我是先用这个方案解决了问题。连帖子都写好了。准备帖在分享栏的。但是想想觉得太丑陋了。于是才发帖问有没有通用的解决方案的:
Mongoid + Rails STI(Single Table Inheritance)
Models
class Category
include Mongoid::Document
field :name
has_many :products
has_many :pages
end
class Pagecategory < Category
end
class Prodcategory < Category
end
class Page
include Mongoid::Document
field :name
field :content
belongs_to :category
end
class Product
include Mongoid::Document
field :name
field :description
belongs_to :category
end
Prodcategory 继承自 Category, 创建 Prodcategory 实例后,会将其在座存储于 Category 表中。同时在 Category 表中添加 _type 对象。
mongoid.org 的描述如下:An additional attribute _type is stored in order to make sure when loaded from the database the correct document is returned.
详情参见http://mongoid.org/docs/documents/inheritance.html
如Prodcategory.create(name: 'product category 1')
在 mongodb 中实际保存在 Category 表中,其_type 为'Prodcategory'.
这时,没有必要专门去创建 prodcategories_controller.rb 与 pagecategories_controller.rb 以及相应的 views。 所要做的事情是对 routes.rb , views/categories/_form.html.erb 及 controllers/categories_controller.rb进行一些修改。
修改后的 routes.rb
resources :pages
resources :products
resources :categories
resources :prodcategories, :controller => "categories",:_type => "Prodcategory"
resources :pagecategories, :controller => "categories",:_type => "Prodcategory"
修改后的 views/categories/_form.html.erb
<%= simple_form_for(@category) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<% if f.object.new_record? %>
<%= f.object._type = params[:_type] %>
<% end %>
<%= f.input :_type, :collection => [['Default Category','Category'],['Product Category','Prodcategory'],['Page Category','Pagecategory']], :include_blank => false %>
<%= f.input :name %>
</div>
<div class="actions">
<%= f.button :submit %>
</div>
<% end %>
进行了部分修改的 controllers/categories_controller.rb
def update
@category = Category.find(params[:id])
_s = @category.class.to_s.downcase #更改params upload的hash名.
respond_to do |format|
if @category.update_attributes(params[_s]) #upload it!
format.html { redirect_to @category, notice: 'Category was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
end
在原来的基础上添加了:_type 字段的下拉选框
<%= simple_form_for @category do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<% if f.object.new_record? %>
<%= f.object._type = params[:_type] %>
<% end %>
<%= f.input :_type, :collection => [['Default Category','Category'],['Product Category','Prodcategory'],['Page Category','Pagecategory']], :include_blank => false %>
<%= f.input :name %>
</div>
<%= f.button :submit %>
<% end %>
Done!
举例来说:
这时,通过prodcategories/new
即可直接创建 Prodcategory 的实例。
新建的实例可以通过 Prodcategory 来查找,访问。
如新建 product 时,可以使用这样的 Form:
<%= simple_form_for(@product) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :category_id, :collection => Prodcategory.all, :include_blank => false %>
<%= f.input :name %>
<%= f.input :description %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
@_@ 一沉到底了?
呃,默认的 dns,自己指定的 DNS 服务等等等都不成。 再有就是 google 的 dns 肿么了?
@_@, 杯具啊。我这边直接访问不了。而后换 google 的 DNS 后还是不行。翻出墙外之后才可以访问~~~
@_@ ,唔?那我得好好研究一下。有时,木有时间磨刀就被赶去砍树了。 隔段时间回头看自己的代码,总是觉得惨不忍睹。
在测试自动提交的程序?
client_max_body_size?
外放木马,将 360 也不会用的傻 X 们感染了。让肉鸡们替你访问增加点击。作为报酬,你顺便帮他们把浏览器升级到 IE8...
若非是send_file
?
我大学读的新闻传播专业,细分来说,是广告专业。09 年毕业后没做过任何与广告相关的东西。凭着自学的一点 html+css 基础进了深圳一家做网站开发的公司打杂。半年后离开,进了一家外贸易公司,继续打杂。新工作相对轻松,于是自学了 ROR,用 ROR 给公司开发了两个网站。现在辞职了,宅在家里学技术...说来还真是有点悲苦~~~