小编pur*_*nic的帖子

在Spree结帐流程中添加一个步骤

我正在尝试为我的Spree 1.2商店添加一个额外的步骤,这将允许客户创建订阅.我已插入步骤,并呈现正确的视图,但当用户单击"保存并继续"时,将呈现下一步,但实际上并未保存任何内容.

我知道我需要添加一个state_callback,但我不知道如何做到这一点并且Spree文档非常缺乏(大概是因为它很新)

目前我的扩展中有以下内容:

车型/大礼包/ order_decorator.rb

Spree::Order.class_eval do
  belongs_to :subscription

  accepts_nested_attributes_for :subscription

  # This doesn't appear to be called
  Spree::Order.state_machine.after_transition :from => :subscription,
                                              :do => :valid_subs?

  checkout_flow do
    go_to_state :address
    go_to_state :subscription
    go_to_state :payment, :if => lambda { |order| order.payment_required? }
    go_to_state :confirm, :if => lambda { |order| order.confirmation_required? }
    go_to_state :complete
    remove_transition :from => :delivery, :to => :confirm
  end
end
Run Code Online (Sandbox Code Playgroud)

不完全确定accepts_nested_attributes是必要的,但到目前为止我的开发方法一直是试验和错误,所以它最终停留在那里.

在models/subscription.rb中

class Subscription < ActiveRecord::Base

  attr_accessible :start_date, :frequency

  belongs_to :user 
  has_many :orders
  has_many :products

  validates :start_date, :frequency, :presence …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails spree

12
推荐指数
1
解决办法
2621
查看次数

如何在Rails 3.1项目中查看SCSS @warn和@debug指令?

我最喜欢的SCSS调试功能之一是@warn和@debug指令,它们都有助于调试.但是,当我将其中任何一个放在我的scss文件中的Rails 3.1项目中时,它们不会出现在stdout中(来自运行tail -f log/development.log)

有谁知道是否可以启用这些,以便Sprockets/Rails不会禁用它们,我可以在输出流中查看输出.

sass ruby-on-rails-3.1

9
推荐指数
1
解决办法
9009
查看次数

如何在Rails 3中使用Mongoid嵌入式资源创建嵌套表单?

我有一个食谱模型,其中嵌入了成分,使用Mongoid.

class Recipe
  include Mongoid::Document
  include Mongoid::Timestamps

  field :title, :type => String
  embeds_many :ingredients

  accepts_nested_attributes_for :ingredients, :reject_if => lambda { |a| a[:title].blank? }, :allow_destroy => true

  validates :title, :presence => true
end

class Ingredient
  include Mongoid::Document
  field :name, :type => String
  field :quantity, :type => String

  embedded_in :recipe, :inverse_of => :ingredients
end
Run Code Online (Sandbox Code Playgroud)

我希望能够同时创建一个新的配方,以及该配方的相关成分,但我很难理解我将如何做到这一点.这是我到目前为止:

_form.html.erb - 在配方视图中使用

<%= form_for @recipe do |f| %>  
...
  <li>Title: <%= f.text_field :title %></li>

  <% f.fields_for :ingredients do |builder| %>
    <%= render "ingredient_fields", :f => builder …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mongodb mongoid ruby-on-rails-3 ruby-on-rails-3.1

8
推荐指数
1
解决办法
5126
查看次数

目前在Refinery CMS网站中嵌入表单的方式是什么?

我想在基于Refinery的CMS站点上创建几个表单.一个是联系表单,另一个是此联系表单的变体,其中包含一些其他字段.对于这个表单,我查看了Refinery查询gem,但我似乎无法找到修改其他字段的表单的方法,或者将其嵌入多个页面(每个页面通过i18n gem有多种语言) .我也偶然发现了 可能符合我要求的Refinery Engines,但它在相当长的一段时间内没有更新,因此不确定它是否适用于最新版本.

Generators gem还在使用吗?有没有人使用这个宝石来实现我想要实现的目标,或者什么是Refinery创建自定义表单的方式?

ruby-on-rails refinerycms ruby-on-rails-3

5
推荐指数
1
解决办法
1108
查看次数

带有Active Admin和Devise的401重定向循环

我有一个带有Devise(2.2.3)和Active Admin(0.5.1)的应用程序,我先安装了Devise,然后又安装了Active Admin。整个应用程序都需要位于登录名后面,因此在我的应用程序控制器中,我具有以下内容:

before_filter :authenticate_user!
Run Code Online (Sandbox Code Playgroud)

但是,由于将Active Admin安装到根名称空间(config.default_namespace = false,在initializers / active_admin.rb中),所以我的应用程序现在不允许任何人登录。它创建到/ users / login路径的重定向循环。

我试图通过在我的config / application.rb文件中添加skip_before_filter来缓解这种情况,但这没有用

config.to_prepare do
  Devise::SessionsController.skip_before_filter :authenticate_user!
  UsersController.skip_before_filter :authenticate_user!
end
Run Code Online (Sandbox Code Playgroud)

并且我还将以下内容添加到app / admin / user.rb

controller do
  skip_before_filter :authenticate_user!
end
Run Code Online (Sandbox Code Playgroud)

这也什么也没做。最后,我尝试在application_controller.rb中明确排除两个控制器,但这也无济于事。

before_filter :authenticate_user!, except: {controller: [:users, 'devise/sessions']}
Run Code Online (Sandbox Code Playgroud)

如何解决这个相当烦人的问题?

redirect-loop devise activeadmin ruby-on-rails-3.2

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

在重新排序DOM时,如何重新绘制和重新组织Isotope容器中的元素?

按照这个JSFiddle,我创建了一个包含我的每个元素的同位素容器,点击其中一个链接(左下角)我想重新排序元素,将匹配的元素拉到我容器的左边.

我这样做是通过从DOM中删除它们并将它们移动到包含div的顶部.如果您检查浏览器的控制台,您会看到这种情况成功发生,但以下对Isotope的调用(重绘)会触发回调,但似乎不会触发实际的重绘.不完全确定为什么会这样,是否有人能够解释?

javascript jquery jquery-isotope

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

在对象上执行函数,然后在 Ramda 中操作对象

我在一点点 ramda 逻辑上挣扎,我觉得我几乎掌握了它,但我的大脑今天不能正常工作。

我有一个对象:

const thing = {
  'name': 'thing',
  'value': 1000.0987654321,
  'valueAsString': "1000.0987654321",
  'otherThings': { 'blah': 'blah' },
}
Run Code Online (Sandbox Code Playgroud)

我想从事物中提取“名称”和“值”,但我想在返回新对象之前对值进行舍入。

我知道要提取名称和值,我可以使用 pick:R.pick(['name', 'value'])并执行我的舍入函数,我可以采用现有的舍入函数:

const roundTo9Dp = (n) => Number((n).toFixed(9))
Run Code Online (Sandbox Code Playgroud)

并将其应用于我的对象,如下所示: R.compose(roundTo9Dp, R.prop('value'))

这两个操作独立工作:

const picker = R.pick(['name', 'value'])
picker(thing) // => {"name": "thing", "value": 1000.0987654321}

const rounded = R.compose(roundTo9Dp, R.prop('value'))
rounded(thing) // => 1000.098765432
Run Code Online (Sandbox Code Playgroud)

当我加入他们时,我正在挣扎。就好像他们在不同层面上对“事物”进行操作,而我只是在努力解开它们。

R.compose(picker, R.assoc('value', rounded))(thing) // Incorrect
picker(R.compose(R.assoc('value'), rounded)(thing)(thing)) // works, but is hideous
Run Code Online (Sandbox Code Playgroud)

javascript functional-programming ramda.js

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