小编Pla*_*Ton的帖子

Rails/HAML:文本邮件中的换行符

我只是想尝试格式化一个haml生成的(文本)邮件程序模板,而我在阅读多个换行符时遇到了一些困难.例如:我想过

Dear
= @user.name,

Your username is
= @user.username




Your status is
= @user.status
Run Code Online (Sandbox Code Playgroud)

我曾假设会读取多个换行符,但"您的状态为"行会在用户名正下方的行上显示.(是的,那么多次换行是夸大了我想要多少,但仍然)

所以,问题是:haml短信中的换行符......呃,怎么样?

haml ruby-on-rails actionmailer

19
推荐指数
4
解决办法
8929
查看次数

Rails嵌套has_one:无法删除现有记录

我正在尝试在"问题"模型中更新嵌套的question_output属性.一个问题has_one question_output.如果数据库中没有现有的question_output,一切正常.但是如果记录已经有一个question_output,我在尝试更新时会得到以下结果:

无法删除现有的关联question_output.在将外键设置为nil之后,记录无法保存.

我本以为allow_destroy可以解决这个问题,但是唉 - 没有快乐.不可否认,我之前没有使用过has_one.但如果有人对如何解决这个问题有任何想法,我会很感激.相关代码如下:

表格:

= form_for [@question.project, @question], :as => :question, :url => admin_project_question_path(@question.project, @question) do |f|
  = render '/shared/form_errors', :model => @question
  = f.fields_for :question_output_attributes do |qo|
    .field
      = qo.label :question_type
      = qo.select :question_type, QuestionOutput::QUESTION_TYPES
    .field
      = qo.label :client_format
      = qo.select :client_format, QuestionOutput::CLIENT_FORMATS
    .field
      = qo.label :required
      = qo.check_box :required
    .field
      = qo.label :min_input, 'Length'
      = qo.text_field :min_length
      = qo.text_field :max_length
    = f.submit 'Save Question Formatting'
Run Code Online (Sandbox Code Playgroud)

问题模型:

class Question < ActiveRecord::Base
  has_one :question_output
  accepts_nested_attributes_for …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails has-one nested-attributes

19
推荐指数
1
解决办法
9603
查看次数

Rails:一次运行多个rake任务?

一直爱着铁路,但仍然在努力从命令行运行任务需要多长时间.

我想知道是否可以在不重新加载环境的情况下组合多个rake任务.例如,如果我跑

rails generate rspec:install && rails generate model test_model title:string && rake db:migrate
Run Code Online (Sandbox Code Playgroud)

它将花费10秒加载rails来运行rspec安装,然后另外10秒加载环境以生成模型,然后另一个用于迁移.有没有办法为所有3个命令保持相同的环境?

rake ruby-on-rails

18
推荐指数
1
解决办法
9740
查看次数

黄瓜:等待ajax:成功

我在Rails 3.1项目中有以下典型的黄瓜步骤:

...
When I follow "Remove from cart"
Then I should see "Test Product removed from cart"
Run Code Online (Sandbox Code Playgroud)

困难在于"从购物车中移除"按钮是一个ajax:远程调用,它通过以下方式将"测试产品从购物车中删除"返回到#cart_notice元素:

$('#cart_notice').append("<%= @product.name %> removed from cart");
Run Code Online (Sandbox Code Playgroud)

该功能在浏览器中工作正常,但没有在黄瓜中找到"从购物车中删除测试产品"文本.我猜这是因为Cucumber在AJAX返回之前正在搜索文本?

所以,简而言之...如何确保黄瓜在搜索所需内容之前等待ajax返回结果?

ruby-on-rails cucumber

17
推荐指数
1
解决办法
7959
查看次数

骨干新手:如何从收藏中获得第一个模型?

我有一个集合,它返回给定范围内每个日期的模型(通过Rails控制器输入).

在我对集合的看法中,我想显示集合中第一个日期的月份......我只是想知道实现这一目标最优雅的方式是什么?

看起来最简单的方法是通过集合访问模型数组,然后在第一个模型中运行,并在该模型中运行所需的方法来检索月份名称.看起来很简单,但我无法弄清楚如何从集合中抓取第一个模型.

或者,我可以通过从rails调用router()来传递所需的值,但这看起来有点难看.

最后,我可以创建一个全新的集合只是为了检索那个值,但是再次 - 似乎过度了.

关于我应该怎么做的任何建议?假设将模型数据反馈回集合并不是太多禁忌,我想我正在问如何做到这一点.

javascript backbone.js

17
推荐指数
2
解决办法
2万
查看次数

"Ruby中不需要接口和抽象类" - >有人能解释一下吗?

我正试图绕过Ruby,而我正在努力的一件事是缺乏接口/抽象类支持.从谷歌搜索,我不断看到抽象类相关的Ruby问题的响应是"你在用Java思考.Ruby不会那样工作"

那么,没有接口/抽象类,如何在Ruby中工作呢?

例如,在Java中,我可能会创建一个抽象类"book",其子类为"novel","textbook"和"journal".我在"书"中提到了许多常见的功能,但我不希望它可以直接访问 - 一本书必须是小说,教科书或期刊.

在ruby中,我将如何写出这种功能?

ruby abstract-class interface

16
推荐指数
1
解决办法
6746
查看次数

Vim自动完成:取消自动完成弹出窗口

如果我在vim中点击ctrl + n,我会在弹出框中找到建议的自动完成选项列表.

这很好......但如果我决定我不想自动完成,我不太清楚要按什么来恢复建议.

例如,假设我输入rea,点击ctrl + n,并弹出自动完成really_long_method_name_damn_this_is_annoying... ...我不想要那样.我无法弄清楚如何将语法还原为rea...我必须手动删除不需要的字符.

我猜这是一个非常简单的事情,但仍然 - 如果有人知道如何,请告诉我.

vim autocomplete

16
推荐指数
1
解决办法
3281
查看次数

Chrome开发者工具:学习高级功能的最佳资源?

我随意使用Chrome开发人员工具来调试AJAX和JavaScript.大多数情况下,这意味着控制台检查元素/变量/方法状态,偶尔"网络"选项卡调试通过ajax提供的问题,如果我不能找到JS错误,偶尔会在调试器中断点.

但是任何时候专门的前端开发人员(我的后端)都会在我面前使用相同的工具,他们会使用这些漂亮而抽象的小功能,这些功能总是让我觉得"该死的,为什么我不知道这个" ?

...所以,问题是:对资源的任何建议,提供谷歌铬devtools的彻底和更高级的解释?

javascript google-chrome-devtools

16
推荐指数
2
解决办法
5314
查看次数

Rails/RSpec:'get'到另一个控制器

我在我的Rails 3 controllers/application.rb中有以下内容(我正在尝试编写规范):

  rescue_from CanCan::AccessDenied do |exception|
    flash[:alert] = t(:access_denied)
    if (current_user) then
      redirect_to root_url
    else
      session[:direct_redirect] = request.url
      redirect_to new_user_session_url
    end
  end
Run Code Online (Sandbox Code Playgroud)

我想写一些规格以确保功能正常.我已将测试放在spec/controller/application_controller_spec.rb中,并且我应该写一些如下的内容:

  it "should redirect to the root url" do
    controller.stub(:authorize!) { raise CanCan::AccessDenied }
    get :index
    response.should redirect_to(root_url)
  end
Run Code Online (Sandbox Code Playgroud)

问题是get:index line.规范抛出'无路由匹配控制器=>应用程序'错误."足够公平",我想,并尝试路由到不同的控制器.尝试是:

* get :controller => 'purchases', :action => :index
* get purchases_url
* get '/purchases/'
Run Code Online (Sandbox Code Playgroud)

所有这些都被解释为"应用程序"控制器下的一个动作.

那么,除了编写规范之外,我如何路由到rspec中的控制器?

rspec ruby-on-rails-3

15
推荐指数
2
解决办法
1万
查看次数

Git日志:未来修订的日志

当我检查以前提交的git存储库时,'git log'不再显示在当前检出的提交之后提交的提交.

所以,问题是:如何在当前签出的提交之后获取提交日志?

git

15
推荐指数
1
解决办法
3338
查看次数