Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3-按名称而不是id查找_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails 3-按名称而不是id查找

Ruby on rails Rails 3-按名称而不是id查找,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试学习RoR,构建我的第一个应用程序,一个基本的库存应用程序。我试着四处搜索,但找不到正确的语法,所以我想我会问 以下是我的设置: 模型 这将返回我想要的数据,但我希望将供应商名称输入控制器,以便在ID不匹配时仍能正常工作 希望这是足够的信息,谢谢 您可以反转方法位并尝试: @items = Supplier.find_by_name('THE NAME').items Rails创建用于搜索的动态find_by_*和find_all_by_*方法。与按供应商id检索项目不同,我建议您

我正在尝试学习RoR,构建我的第一个应用程序,一个基本的库存应用程序。我试着四处搜索,但找不到正确的语法,所以我想我会问

以下是我的设置:

模型

这将返回我想要的数据,但我希望将供应商名称输入控制器,以便在ID不匹配时仍能正常工作


希望这是足够的信息,谢谢

您可以反转方法位并尝试:

@items = Supplier.find_by_name('THE NAME').items
Rails创建用于搜索的动态find_by_*和find_all_by_*方法。与按供应商id检索项目不同,我建议您让rails使用您在上面的代码片段中设置的关联来为您检索项目。在内部,这仍然使用供应商id,但是rails正在处理这个过程,而不是您

反过来也是可能的,因此,如果您有一个项目并且想要供应商,您可以:

Item.find(1).supplier
其中,
colname
是要检查参数值的
供应商表列的名称。在rails中,我们只需在列名后面加上
find_by_u
,如上图所示,rails将向您展示它的神奇之处;)。这是中的参考资料

@items = Supplier.find_by_name('THE NAME').items
Item.find(1).supplier
@items = Item.joins(:suplier).where(:suplier => { :name => "Suplier name" })
Supplier.find_by_colname(params[:name])