我正在尝试为我的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) 我最喜欢的SCSS调试功能之一是@warn和@debug指令,它们都有助于调试.但是,当我将其中任何一个放在我的scss文件中的Rails 3.1项目中时,它们不会出现在stdout中(来自运行tail -f log/development.log)
有谁知道是否可以启用这些,以便Sprockets/Rails不会禁用它们,我可以在输出流中查看输出.
我有一个食谱模型,其中嵌入了成分,使用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
我想在基于Refinery的CMS站点上创建几个表单.一个是联系表单,另一个是此联系表单的变体,其中包含一些其他字段.对于这个表单,我查看了Refinery查询gem,但我似乎无法找到修改其他字段的表单的方法,或者将其嵌入多个页面(每个页面通过i18n gem有多种语言) .我也偶然发现了 可能符合我要求的Refinery Engines,但它在相当长的一段时间内没有更新,因此不确定它是否适用于最新版本.
Generators gem还在使用吗?有没有人使用这个宝石来实现我想要实现的目标,或者什么是Refinery创建自定义表单的方式?
我有一个带有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)
如何解决这个相当烦人的问题?
按照这个JSFiddle,我创建了一个包含我的每个元素的同位素容器,点击其中一个链接(左下角)我想重新排序元素,将匹配的元素拉到我容器的左边.
我这样做是通过从DOM中删除它们并将它们移动到包含div的顶部.如果您检查浏览器的控制台,您会看到这种情况成功发生,但以下对Isotope的调用(重绘)会触发回调,但似乎不会触发实际的重绘.不完全确定为什么会这样,是否有人能够解释?
我在一点点 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 ×2
activeadmin ×1
devise ×1
jquery ×1
mongodb ×1
mongoid ×1
ramda.js ×1
refinerycms ×1
sass ×1
spree ×1