0

在我的模型中,我有类似的上下文

acts_as_taggable_on :sport, :music

在控制台中我可以做到这一点

@student = Student.first
@student.sport_list = ("baseball, soccer")
@student.save

@student.music_list = ("rock, pop")
@student.save

@student.sport_list  
[baseball, soccer]

@student.music_list
[rock, pop]

所有这些都可以正常工作,但是,在我想要动态执行此操作的视图中,我在一个字符串中捕获了 JavaScript 在其他上下文之间选择的上下文,例如:

mycontext = music

我的疑问是:它可能使动态做

@student.mycontext_list = "rock, pop"

因为我收到以下错误 undefined method `mycontext_list=' for Student:0xb4475d4c

问候朋友!!!

4

3 回答 3

1

试试下面的方法:

 @student.send :"#{mycontext}_list=", "rock, pop"
于 2012-06-04T17:52:11.353 回答
0

它已经在那里给出了mbleigh/acts-as-taggable-on

@student.set_tag_list_on(mycontext, "rock, pop")
于 2012-06-05T04:19:18.893 回答
0

最简单的解决方案是定义一个接受字符串/符号作为输入的方法

class Student
  def mycontext_list(string)
    self.send("#{string}_list".to_sym)
  end
end

Javascript 传递的任何字符串都将用于调用适当命名的方法(在其末尾附加 _list)。

于 2012-06-04T18:00:32.307 回答