我会知道load_and_authorize_resource里面的作品.我搜索了github页面链接并试图找不到,但我没有发现任何有用的东西.我只是理解load_and_authorize_resource这就像是before_filter并且它(以某种方式)加载了我们在ability.rb中编写的能力.
我会更清楚这是如何可能的.我的意思是,我不想研究所有的宝石,但我想知道如何在控制器中加载资源的能力,以及它load_and_authorize_resource是否真的是一种before_filter.
我有一个产品模型,我需要在_form视图中写入,管理员想要插入的产品的数量.我有另一个带有Supply(产品数量)的表,所以在我的产品表中我没有属性数量,但我只有supply_id(链接我的两个产品和供应表)
由于我的产品表中没有数量,因此我在Product上使用了虚拟属性.
我不得不改变新的视图和编辑产品的原因在新的我希望字段数量但在编辑中我不想要(因为我使用另一个视图来做这个)所以,我删除了部分_form并创建了单独的视图.另外,我必须在产品的控制器中设置如果我想更新产品,我必须调用set_quantity回调,因为我必须插入一个"假"值来填充params[:product][:quantity].这是因为我在产品模型中的数量虚拟字段上设置了验证状态为true.我想知道,如果所有这些故事都是正确的(它有效,但我想要一个关于这个故事的编程设计的建议.因为我不喜欢这样一个事实,即当我有一个假值来填充数量字段时更新产品)
控制器:
class ProductsController < ApplicationController
include SavePicture
before_action :set_product, only: [:show, :edit, :update, :destroy]
before_action :set_quantita, only: [:update]
....
def set_quantita
params[:product][:quantita]=2 #fake value for the update action
end
....
end
Run Code Online (Sandbox Code Playgroud)
模型:
class Product < ActiveRecord::Base
belongs_to :supply ,dependent: :destroy
attr_accessor :quantita
validates :quantita, presence:true
end
Run Code Online (Sandbox Code Playgroud)
如果有更好的方法来填写param[:product][:quantity]更新操作,你能说我吗?因为我不喜欢我给它的值2的事实.谢谢.
我会创建一种“滚动对话”,就像在旧的指向和单击中一样。我会尽量解释得更好:
我有以下文字:“Hello World”。我会在屏幕上一个字母一个字母地打印:“H”(1 秒后)“e”(1 秒后)“l”等等。
我试图这样做:
font = pygame.font.Font("orangekid.ttf", 25)
text = font.render("A long time ago", True, (0, 128, 0))
pygame.display.update()
for i in range(len("A long time ago")):
display_game.fill(BLACK)
display_game.blit(text[i],(400+i, 300))
clock.tick(60)
Run Code Online (Sandbox Code Playgroud)
但它给了我一个关于 text[i] 的错误。
我该如何解决问题?