Jun 19

为什么javaeye上总有人问ActiveScaffold的初级问题?

Tag: activescaffold, chinesecaoweiyuan @ 11:33 pm

javaeye上有评分机制,如果帖子太过初级,会被评为新手贴,而在列表中隐藏。因为我订阅了javaeye上ruby版的RSS,所以即使隐藏的帖子也看得到。而很多新手贴是问关于ActiveScaffold的问题的,让我这个中文站站长颇为汗颜:为什么总有人问ActiveScaffold的初级问题?

对于这个问题,我想说三点。

第一,的确,ActiveScaffold很简单,很省事儿,但还没有简单省事到文档都不读就知道怎么做。  所以,问问题的人必须首先通读文档。我们已经把所有的文档都翻译成了中文,又降低了一点门槛,但我们不想宠坏程序员。技术的进步可以让开发者更有效率,更强大,而不是更懒,更傻瓜。

第二,虽然,我在javaeye开了个杂草丛生的blog,也在那里做过一次有关本站的广告,但那的确不是讨论ActiveScaffold具体问题的地方(更不是问初级问题的地方)。问有关ActiveScaffold的问题,请到这篇博文下面回复。

第三,再次重申,不要问傻问题,不要问文档里有的问题,不要问做ActiveScaffold时遇到的Rails基本问题。欢迎问经过思考的问题,欢迎分享你的创造性使用方法,扩展开发,和深度思考。对于“三不问题”,我们可能会回复,但是保留不予理睬的权利。对于好的问题和分享,我们会“来信选登”。

谢谢你对ActiveScaffold感兴趣,祝开发愉快。

12 Responses to “为什么javaeye上总有人问ActiveScaffold的初级问题?”

  1. caoweiyuan says:

    carlos问:
    现在有个问题让我很困惑,比如两个model,一个是company,一个是group,都有个字段叫name

    一个company有多个group

    我在group_helper.rb里写:

    def name_form_column(record, input_name)
    …..
    end

    结果company form里name的也跟着变,这是为什么呢?

    我答:
    你一定是用了嵌套脚手架。如果company嵌套了group,activescaffold会在执行company controller的时候,把group helper也include进来。

  2. carlos says:

    谢谢答疑,那么这种嵌套关系的情况下,应该怎么分别对company和group使用helper呢? 我试过用company_name和group_name,结果在group画面使用:company的时候,就显示不出名字来。

  3. caoweiyuan says:

    第二个问题的答案在:http://activescaffold.com.cn/tutorials/to_label/

  4. ashchan says:

    问题是,提问者一般不会知道(或故意忽略)自己的问题的级别。

  5. caoweiyuan says:

    @ashchan 所以要先通读一遍文档,这是起码的。

  6. dave says:

    我有个业务要求:数据库应用程序经常需要将数据导出为CSV以便打印信息。
    参考:http://www.ibm.com/developerworks/cn/linux/l-activescaffold/
    在控制器中:
    class UsersController ‘Export to Excel’, :page => true
    end

    def export_csv
    # find_page is how the List module gets its data. see Actions::List#do_list.
    records = find_page().items
    return if records.size == 0

    # Note this code is very generic. We could move this method and the
    # action_link configuration into the ApplicationController and reuse it
    # for all our models.
    data = “”
    cls = records[0].class
    data << cls.csv_header << “\r\n”
    records.each do |inst|
    data << inst.to_csv < ‘text/csv’, :filename => cls.name.pluralize + ‘.csv’
    end
    end
    在model中:
    class User < ActiveRecord::Base

    # The header line lists the attribute names. ID is quoted to work
    # around an issue with Excel and CSV files that start with “ID”.
    def self.csv_header
    “”ID”,Last Name,First Name,Email,Birthdate”
    end

    # Emit our attribute values as a line of CSVs
    def to_csv
    id.to_s << “,” << last_name << “,” << first_name << “,” << email <<
    “,” << birthdate.to_s
    end
    end
    因为几乎每个表都要打印,在控制器中直接写到application中就可以了。而在model中要把每个字段都列出来,好像有点麻烦。而且在字段值为空的时候会报错。
    有没有什么好的方法?

  7. caoweiyuan says:

    csv export的问题没有经验,抱歉不能彻底帮你解决问题,只能提些想法。在每个model中做重复动作显然不符合DRY原则,你可以自己写一个插件,然后只需要比方说config.csv.columns = :last_name, first_name就可以了。这样的插件也许已经有了,你可以去activescaffold.com的第三方插件wiki页面去看看。

  8. lele says:

    我在网站上下载的ActiveScaffold的插件。在IE下可以运行,但是在FF下就报错 报一个RJS的错 说找不到第一行,

  9. caoweiyuan says:

    @lele 我也听人report过FF下没问题,而IE下报错的。这些问题我都没碰到过,理论上prototype这个js框架提供了跨浏览器支持。你可以看看demo.activescaffold.com.cn是否能运行在不同的浏览器里。如果你确定这是一个bug,可以在google code的各自项目里提交。

  10. 活动脚手架 » 活动脚手架中文论坛开通 says:

    […] 上次发表了不喜欢回答初级问题,也怕宠坏程序员的帖子,有人在javaeye上提出如果单方面拒绝回答初级问题,会显得很狂妄。为此我为那篇文章中的令人不舒服的措辞抱歉。 […]

  11. ashchan says:

    @lele 在FF和Safari下是有可能会出错的,我也遇到过。比方说active_scaffold.js 的第 266 行:
    this.adapter.getElementsByClassName(’cancel’).each(function(elem) {
    getElementsByClassName在FF3和Safari里均为内置实现,这一行就会出问题了。

  12. caoweiyuan says:

    @ashchan 顺着你的提示,我查到了activescaffold项目中的这个issue:http://code.google.com/p/activescaffold/issues/detail?id=553

    AS的开发者之一timcharper声明已经在6月18日修好了这个问题。

Leave a Reply