我遇到了使用命名约定的rails的问题。
我有一个数据库,我无法重命名表格,因此 inflector 的名称不是复数形式。
今天我想为表“wishlist__c”创建模型和控制器,问题在这里。我通过复制产品模型,控制器....然后更改名称然后自己创建文件尝试了3次,我仍然遇到问题,然后使用 rails g scaffold wishlist__c
我尝试访问网址时出现的第一个错误:8080 / wishlist__c / index:
存在路由错误 未初始化的常量WishlistCController
wishlist__c_controller.rb 。经过多次测试后我注意到双'__'是rails中的一个问题。我将它重命名为wishlist_c_controller,并与模型相同。错误消息更改为
- 解决方案:我忘记将文件夹wishlist__c重命名为viewslist文件夹中的wishlist_c
谢谢大家! -
WishlistCController#show中的ActiveRecord :: RecordNotFound 无法找到带有'id'= index
的WishlistC
此下的代码显示来自wishlist_c_controller.rb:
def set_wishlist__c
@wishlist__c = ::WishlistC.find(params[:id])
end
如何解决它。我需要将我的应用程序链接到此表
编辑: 型号 wishlist_c.rb :
class WishlistC < ApplicationRecord
self.table_name = "wishlist__c"
end
wishlist_c_controller :
class WishlistCController < ApplicationController
before_action :set_wishlist__c, only: [:show, :edit, :update, :destroy]
# GET /wishlist__c
# GET /wishlist__c.json
def index
@wishlist__c = WishlistC.all
end
# GET /wishlist__c/1
# GET /wishlist__c/1.json
def show
end
# GET /wishlist__c/new
def new
@wishlist__c = WishlistC.new
end
# GET /wishlist__c/1/edit
def edit
end
# POST /wishlist__c
# POST /wishlist__c.json
def create
@wishlist__c = WishlistC.new(wishlist__c_params)
respond_to do |format|
if @wishlist__c.save
format.html { redirect_to @wishlist__c, notice: 'Wishlist c was successfully created.' }
format.json { render :show, status: :created, location: @wishlist__c }
else
format.html { render :new }
format.json { render json: @wishlist__c.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /wishlist__c/1
# PATCH/PUT /wishlist__c/1.json
def update
respond_to do |format|
if @wishlist__c.update(wishlist__c_params)
format.html { redirect_to @wishlist__c, notice: 'Wishlist c was successfully updated.' }
format.json { render :show, status: :ok, location: @wishlist__c }
else
format.html { render :edit }
format.json { render json: @wishlist__c.errors, status: :unprocessable_entity }
end
end
end
# DELETE /wishlist__c/1
# DELETE /wishlist__c/1.json
def destroy
@wishlist__c.destroy
respond_to do |format|
format.html { redirect_to wishlist__c_index_url, notice: 'Wishlist c was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_wishlist__c
@wishlist__c = WishlistC.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def wishlist__c_params
params.fetch(:wishlist__c, {})
end
end
答案 0 :(得分:0)
Rails基于控制器和模型创建RESTful路由。其中一条路线是get wishlist__c/:id
,它被映射到WishlistCController的动作show
。因此,当您点击网址wishlist__c/index
时,需要index
作为ID。
如果要呈现index
页面,请创建路径get wishlist__c/index
并将其映射到控制器的index
方法。要使上述工作正常,您必须点击网址url:8080/wishlist__c/1
,其中1
是您的愿望清单ID。将其替换为id
表的wishlist__c
列的值。
查看控制器,您已经有一条路由get wishlist__c/
映射到控制器的index
方法。因此url:8080/wishlist__c/
应该为您的模型呈现索引页。