伙计我正在尝试使用params[:id]
从数据库中检索特定记录。
x = Authors.find(params[:id])
我们不能将 FIND 与此类字符串一起使用,因为该参数始终由 HTTP 作为字符串传递:
我也试过这段代码,但我不知道为什么它总是返回 0 ,而传递的参数是 4
x = Authors.find(params[:id]).to_i
那么我怎样才能为强制转换ID参数或任何方法转换HTTP传递字符串为整数
答案 0 :(得分:2)
您不必将字符串转换为整数以使用find。它应该能够为你转换字符串。
Just to give an example:
Author.find(2) # => #<Author:1234>
Author.find("2") # => #<Author:1234>
Author.find("2") == Author.find(2) # => true
尝试使用pry
查看您传递的内容是否正确。希望这有助于清除方法。
答案 1 :(得分:1)
我想你可能只是放错了你的类型转换:
x = Authors.find(params[:id].to_i)
答案 2 :(得分:0)
你可以用这个:
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Auth\Passwords\CanResetPassword;
class User extends Authenticatable
{
use SoftDeletes, CanResetPassword;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'handle', 'email', 'password', 'confirmation_code'
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password', 'last_ip', 'updated_at', 'email', 'confirmed', 'confirmation_code', 'updated_at', 'deleted_at'
];
protected $dates = ['last_logged_in', 'last_activity', 'created_at', 'updated_at', 'deleted_at'];
}
然而,
x = Authors.find(params[:id].to_i)
也正确,因为它返回正确的作者。 在使用上述之前,您可以检查params [:id]是否存在:
x = Authors.find(params[:id])
答案 3 :(得分:0)
在我尝试抓取的参数上使用方法 .inpect 之后,我发现它是零。我错误地抓住了它。顺便说一下,我试图抓住另一个参数而不是:id 但是:artCatNam e以下是我传递的参数:
{"utf8"=>"✓", "authenticity_token"=>"tQetEjfE+stm/yXfQWyS9pEhznu+zeNwrHPa6BNjWsfd4bcv/PFsYRcMT1L8y2obJt6xNTcoOFNgzq6R6OcjMw==", "category"=>{"artCatName"=>"1"}, "article"=>{"artTitle"=>"bb", "artBody"=>"b"}, "commit"=>"Publish", "controller"=>"articles", "action"=>"create"}
我在这里抓取:artCatName 以及我如何转换为整数
params[:category][:artCatName].to_i