我知道在使用视图模板(html,rabl)时,我不需要在我的控制器操作中进行显式渲染调用,因为默认情况下,Rails会使用与控制器操作名称对应的名称来呈现模板.我喜欢这个概念(不关心我的控制器代码中的渲染),因此想知道在使用ActiveModel :: Serializers时这是否可行?
例如,这是来自生成的控制器的代码(Rails 4.1.0):
class ProductsController < ApplicationController
before_action :set_product, only: [:show, :edit, :update, :destroy]
#other actions
# GET /products/1
# GET /products/1.json
def show
end
end
Run Code Online (Sandbox Code Playgroud)
这是序列化器:
class ProductSerializer < ActiveModel::Serializer
attributes :id, :name, :description, :url, :quantity, :price
end
Run Code Online (Sandbox Code Playgroud)
点击/products/1.json,我希望有两件事情发生:
但是,这不会发生,整个序列化器被忽略.但是,如果我将Show方法修改为以下内容:
# GET /products/1
# GET /products/1.json
def show
@product = Product.find(params[:id])
respond_to do |format|
format.html
format.json { render json: @product }
end
end
Run Code Online (Sandbox Code Playgroud)
现在一切都很好,但我已经失去了before_action过滤器的好处(在我看来,我有一些冗余代码).
这应该怎么做?
我被困了很长一段时间:
class Something< ActiveRecord::Base
table_name= "different_name"
end
Run Code Online (Sandbox Code Playgroud)
并且它没有用,说表'Something'不存在(这是真的),直到我把那个注定的线改为
set_table_name "different_name"
Run Code Online (Sandbox Code Playgroud)
这没关系,除了Rails指南声称set_table_name是'也别名为:table_name ='.
现在,我是rails的新手,但那个'也有别名'是什么意思?或者这只是一个错误?
我使用CMake在Windows,OSX和Linux上生成生成文件(makefile或项目文件),并使用这些平台的本机C和C ++编译器。在Windows I gnerate VS 2010项目上,在Release配置中,发生以下错误:
命令行错误D8016:'/ ZI'和'/ Ob2'命令行选项不兼容
显然,CMake会生成不兼容的优化和调试信息选项。这是默认的CMake配置,我没有设置任何特殊标志。
我通过在Visual Studio的项目选项中将/ ZI更改为/ Z7来解决此问题,但这使设置连续集成系统很烦人-我需要添加脚本来修改项目文件。
我可以强制CMake替代/ ZI来/ Z7(与C7兼容的调试信息)吗?
另外,如何使它仅在Release配置中而不在Debug中生成?