我正在尝试使用一个虚荣URL,该URL使用SecureRandom发出的一个涵洞的身份,然后通过显示页面显示该涵洞。
我的涵洞控制器是:
我试过了两个:
@culvert = Culvert.find_by_culvert_ident(params[:id])
AND
@culvert = Culvert.find_by_id(params[:culvert_ident])
在我的涵洞控制器show动作中,两者都产生相同的结果(屏幕截图)
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
这是我的Culvert模型识别生成器和虚荣URL方法:
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 id
这适用于我使用的另一个网络应用程序,设置完全相同但我在这里得到此错误,无法找出原因。如果您需要更多信息,请告诉我!
**
编辑#1 - 添加控制台输出的屏幕截图
**
答案 0 :(得分:0)
所以这里的问题是我删除了涵洞控制器
before_action :set_culvert
一旦我重新添加set_user操作,问题就解决了。
感谢您的帮助!