Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 基于字符串输入定义列_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 基于字符串输入定义列

Ruby on rails 基于字符串输入定义列,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我试图遵循DRY原则,并发现自己想要在必须有一种方法将字符串指定为变量时重复代码 我有一个基于语言的具有20多个属性的表。我目前正在if语句中分配它们。有没有办法将语言分配给一个字符串,以便在一条语句中引用 if params[:word][:column_name] == "arabic" @word.arabic = params[:word][:translation] end if params[:word][:column_name] == "chinese" @word.ch

我试图遵循DRY原则,并发现自己想要在必须有一种方法将字符串指定为变量时重复代码

我有一个基于语言的具有20多个属性的表。我目前正在if语句中分配它们。有没有办法将语言分配给一个字符串,以便在一条语句中引用

if params[:word][:column_name] == "arabic"
  @word.arabic = params[:word][:translation]
end
if params[:word][:column_name] == "chinese"
  @word.chinese = params[:word][:translation]
end
你可以这样做

@word.send(params[:word][:column_name] + '=', params[:word][:translation])

如果不确定名称为的列是否存在,可以执行以下操作:

if @word.respond_to?(params[:word][:column_name])
  @word.send(params[:word][:column_name] + '=', params[:word][:translation])
end

这是i18n的吗?这是有道理的。@MarkThomas不,不是。对于多种方法,非常漂亮+1
if @word.respond_to?(params[:word][:column_name])
  @word.send(params[:word][:column_name] + '=', params[:word][:translation])
end