小编zmi*_*jko的帖子

ActiveModel :: Serializer是否需要显式渲染调用?

我知道在使用视图模板(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,我希望有两件事情发生:

  1. 未列出序列化程序中未列出的字段,
  2. 要在"产品"顶级字段中封装的整个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过滤器的好处(在我看来,我有一些冗余代码).

这应该怎么做?

actioncontroller active-model-serializers ruby-on-rails-4

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

Rails 3.1.1 ActiveRecord table_name =不起作用

我被困了很长一段时间:

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的新手,但那个'也有别名'是什么意思?或者这只是一个错误?

activerecord ruby-on-rails-3.1

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

CMake:仅为一个平台设置正确的编译器选项

我使用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中生成?

cmake cross-compiling

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