动态选择上下文

时间:2012-06-04 17:48:06

标签: ruby-on-rails ruby acts-as-taggable-on

在我的模型中我有像

这样的上下文
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"

因为我得到以下错误未定义方法`mycontext_list ='for Student:0xb4475d4c

问候朋友!!!

3 个答案:

答案 0 :(得分:1)

尝试以下内容:

 @student.send :"#{mycontext}_list=", "rock, pop"

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

已经在那里mbleigh/acts-as-taggable-on

@student.set_tag_list_on(mycontext, "rock, pop")