Rails控制器脚手架代码

时间:2018-06-28 11:21:57

标签: ruby-on-rails ruby scaffolding

对于一个大学项目,我希望对Rails脚手架机制进行一些更改。主要是我想知道控制器脚手架代码在哪里生成。

在查看代码的生成位置时,我发现这里看起来合适:https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt

但是,更改后似乎没有什么不同。我同时尝试了rails g scaffold ....rails g scaffold_controller ...

我还注意到,最终的代码看起来与模板期望的代码不同。

模板:

# PATCH/PUT <%= route_url %>/1
def update
  if @<%= orm_instance.update("#{singular_table_name}_params") %>
    redirect_to <%= redirect_resource_name %>, notice: <%= "'#{human_name} was successfully updated.'" %>
  else
    render :edit
  end
end

真实性(dogs_controller.rb):

# PATCH/PUT /dogs/1
# PATCH/PUT /dogs/1.json
def update
  respond_to do |format|
    if @dog.update(dog_params)
      format.html { redirect_to @dog, notice: 'Dog was successfully updated.' }
      format.json { render :show, status: :ok, location: @dog }
    else
      format.html { render :edit }
      format.json { render json: @dog.errors, status: :unprocessable_entity }
    end
  end
end

因此,主要是,生成的代码也响应json请求,而模板看起来并没有尊重它。

脚手架控制台的输出也声明为invoke scaffold_controller

然后在这里还有代码:https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/controller/templates/controller.rb.tt,但这甚至是更多的裸露内容。

长话短说,我是在做错什么,还是在脚手架的控制器代码在哪里生成?

仅供参考,我在commit a1f9fe8bdd4e6c4e20fbda424c0ecf2f31fabd30处克隆了rails,并从那里分支了。

0 个答案:

没有答案