Yur*_*uri 3 ruby-on-rails virtual-attribute jquery-tokeninput
我没有用这个Jquery-tokeninput或Rails虚拟属性做很多事情,但是用这个来抨击我的头撞墙.任何帮助或指导表示赞赏.
我的公告模型中有一个虚拟属性读取器,我需要验证以下内容:
attr_reader :classroom_tokens
validates :classroom_tokens, :presence => true``
Run Code Online (Sandbox Code Playgroud)
然后是getter和setter:
def classroom_tokens=(ids)
self.classroom_tokens = ids.split(",")
end
def classroom_tokens
#Tried several things here
end
Run Code Online (Sandbox Code Playgroud)
我真的只需要确保params [:announcement] [:classroom_tokens]不是空的.上面的验证调用似乎正在寻找其他东西,因为无论如何它总是空的.我错过了什么?任何帮助是极大的赞赏.
Rails 3.1 Ruby 1.9.2
更新: 如果我这样做
#Announcement MODEL
attr_reader :classroom_tokens
#validates :classroom_tokens, :presence => true
def classroom_tokens=(ids)
@classroom_tokens = ids.split(",")
end
#Announcement_controller create action
puts "Token=>#{@announcement.classroom_tokens}|"
puts "Params=>#{params[:announcement][:classroom_tokens]}|"
Run Code Online (Sandbox Code Playgroud)
我明白了:
Token=>|
Params=>7,13,12|
Run Code Online (Sandbox Code Playgroud)
而不是设置self.classroom_tokens,只需设置实例变量@classroom_tokens,然后删除classroom_tokens方法,因为您通过使用隐式定义它attr_reader.代码应如下所示:
attr_reader :classroom_tokens
validates :classroom_tokens, :presence => true``
def classroom_tokens=(ids)
@classroom_tokens = ids.split(",")
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4519 次 |
| 最近记录: |