rails 手动创建controller和model 用和model名不同的数据表 会产生的问题

rails的一些学习笔记

rails的controller和model不一定要使用rails命令来写,只要文件的位置放的没错自己手动建立就可以。

  • 手动创建model面临的问题就是数据库表不能建立,但这也有一个好处,我们可以自己新建表,或者使用原有的数据表,而且可以不用和model的名字一样,可以通过self.table_name来制定数据表,这样就有很大的而灵活性。
class yonghu < ApplicationRecord
  self.table_name="user"
end
  • 手动创建controller很简单就不在叙述,下面说说controller,model的名字不同时,会出现的问题。
  • 首先会出问题的就是添加 ,如果你的添加页面使用的是 form_for @实例变量 这种方法就会出现:
    undefined method `ffs_path’ for #<#:0x007f95b70af330> 这种错误,你就发现路由跳到和model名相同的复数路径下,这种错误就是因为你使用了 form_for @实例变量 这样的写法造成的,@实例变量会翻译成和model同名的复数形式路径,这就造成了路由错误,解决办法在routes.rb文件里手动写路径,注意create是post请求。
 post 'ffs'=>'aas#create'
  • 然后就是返回的参数,他是包在@实例变量里的,也就是model的复数名包含着参数。具体看下面返回的结果:
 Parameters: {"utf8"=>"✓","authenticity_token"=>"BvKT9kNlTduSVYoIT0/sJjZanh+VH/nWk+uNAzB5g3Wk9THXtrVX02m5bWeWc4ZXsvMN4ttP+tgW75+tXq5+pw==", "ff"=>{"a"=>"asdfasd", "c"=>"asdf"}, "commit"=>"Create Ff"}
  • 修改也会出点问题,也是form这快,路由问题update的2个路由都要重写
 put 'ff'=>'aas#update'
 patch 'ff'=>'aas#update'
  • 然后就是edit页面的id问题,如果你按照rails的平常的写法来写,在提交的时候就会报错id为空,一个简单的办法在页面里加一个隐藏的input,改正做法如下:
<%= form_for @ss do |f| %>
    <%= f.text_field :a %>
    <%= f.text_field :c %>
    <%= f.text_field :id %>
    <input hidden type="text" value="<%= @ss.id %>" name="id">
    <%= f.submit %>
<% end %>
  • 最后贴上添加和修改时获取参数的方法,我在这犯了一个小错误在这记下来,具体就不多说了,上面都有说到:
 private
  def a_par
    params.require(:ff).permit(:a)
  end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值