我已经生成了一个新的rails 4(rc1)项目,使用rails new并生成了一个脚手架rails g scaffold.
正如预期的那样,它创建了迁移,控制器和所有必需的视图文件.
它还创建了show.json.jbuilder和index.json.jbuilder.
我假设这是为了帮助模型生成json.控制器也包含format.json调用.
问题:为什么它需要json以及生成的应用程序的哪个部分使用json?它看起来不像(对我来说)视图使用json渲染任何东西,似乎它们在服务器端呈现(@model变量在视图中用于获取内容).
边缘指南(http://edgeguides.rubyonrails.org/)没有提到jbuilder以及为什么需要它.
提前致谢!如果我能澄清这个问题,请告诉我.
最近我在Rails(5.0.0.1)上为Ruby(2.3.3)创建了一个应用程序:
$ rails _5.0.0.1_ new myapp --database=postgresql -T
Run Code Online (Sandbox Code Playgroud)
设置Gemfile并测试与我的数据库的连接后:
$ rails db:migrate
Run Code Online (Sandbox Code Playgroud)
我试图生成模型,但我收到了奇怪的消息:
$ rails g model Competition title:string
Expected string default value for '--test-framework'; got false (boolean)
Expected string default value for '--jbuilder'; got true (boolean)
Expected string default value for '--test-framework'; got false (boolean)
invoke active_record
create db/migrate/20161206021603_create_competitions.rb
create app/models/competition.rb
Run Code Online (Sandbox Code Playgroud)
这些消息的含义是什么?"预期的字符串默认值为......"?
提前致谢.
更新:我的Gemfile
source 'https://rubygems.org'
ruby '2.3.3'
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
gem 'pg', '~> 0.18'
gem 'puma', '~> 3.0'
gem 'sass-rails', '~> 5.0' …Run Code Online (Sandbox Code Playgroud) 当您使用命令生成rails脚手架时,rails g scaffold Thing有任何方法可以避免令人讨厌
respond_to do |format|
format.html # index.html.erb
format.json { render json: @things }
end
Run Code Online (Sandbox Code Playgroud)
你控制器里的东西?
我正在尝试在Rails上教一个类,我想首先让它们生成一个脚手架,但是所有json格式化它都比它需要的要复杂得多.如果他们能够生成一个创建这样的控制器的脚手架,我会更高兴:
class ThingsController < ApplicationController
def index
@things = Thing.all
end
def show
@thing = Thing.find(params[:id])
end
def new
@thing = Thing.new
end
def edit
@thing = Thing.find(params[:id])
end
def create
@thing = Thing.new(params[:thing])
if @thing.save
redirect_to @thing, notice: 'Thing was successfully created.'
else
render: "new"
end
end
end
def update
@thing = Thing.find(params[:id])
if @thing.update_attributes(params[:thing])
redirect_to @thing, notice: 'Thing …Run Code Online (Sandbox Code Playgroud)