2016-07-07 59 views
0

我试图使用一个使用SecureRandom发布标识到涵洞的虚空URL,然后通过显示页面显示该涵洞。未找到记录rails 5 ActiveRecord错误

这是错误消息的屏幕截图: enter image description here

这是浏览器的URL的屏幕截图: enter image description here

我涵洞控制器是:

我已经尝试了两种:

@culvert = Culvert.find_by_culvert_ident(params[:id]) 
    AND 
@culvert = Culvert.find_by_id(params[:culvert_ident]) 

在我的涵洞控制器表演动作,都产生相同的结果(截图)

private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_culvert 
     @culvert = Culvert.find_by_culvert_ident(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def culvert_params 
     params.require(:culvert).permit(:culvert_ident, :latitude, :longitude, :address, :user_id) 
    end 

这是我涵洞型号IDENT发电机和个性化网址的方法:

before_create :generate_culvert_ident 

    # Relationships 
    belongs_to :user 

    # Model Validations 
    validates_uniqueness_of :culvert_ident 

    # Ident Generator 
    def generate_culvert_ident 
    begin 
     self.culvert_ident = SecureRandom.hex(3).upcase 
     other_culvert = Culvert.find_by(culvert_ident: self.culvert_ident) 
    end while other_culvert 
    end 

    # Url Direction 
    def to_param 
    culvert_ident 
    end 

所以我的目标是创建涵洞,自动分配一个唯一的标识符,将其保存并使用自定义标识符显示涵洞,而不是标准的1,2,3,4编号的

这个工程在我用过的另一个网络应用程序中,设置完全一样,但我在这里得到这个错误,不能找出原因。如果您需要更多信息,请让我知道!

**

编辑#1 - 控制台输出再添截图

**

enter image description here enter image description here

+0

该记录是否与该“id”一起存在? – Vucko

+0

是的,当我在控制台搜索它拉取记录,并显示身份保存以及标准ID - 实际上它显示为零 - 请参阅上面的屏幕截图现在更新它 –

+0

什么'Culvert.where('culvert_ident =?','BF83D4')。 – Vucko

回答

0

所以这里的问题是,我删除了涵洞控制器

before_action :set_culvert 

只要我重新添加set_user操作,问题就解决了。

感谢您的协助!