3

私はこのJquery-tokeninputまたはRails仮想属性で多くのことをしていませんが、これで壁に頭をぶつけてきました。任意のヘルプやガイダンスをいただければ幸いです。

アナウンスモデルに仮想属性リーダーがあり、次の存在を検証する必要があります。

attr_reader :classroom_tokens
validates :classroom_tokens, :presence => true``

ゲッターとセッターが続きます:

def classroom_tokens=(ids)
    self.classroom_tokens = ids.split(",")
end

def classroom_tokens
    #Tried several things here
end 

params [:announcement] [:classroom_tokens]が空でないことを確認する必要があります。上記のvalidate呼び出しは、何があっても常に空であるため、他の何かを見ているようです。私は何が欠けていますか?どんな助けでも大歓迎です。

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]}|" 

私は得る:

Token=>|
Params=>7,13,12|
4

1 に答える 1

8

を設定する代わりに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
于 2012-03-13T03:58:56.473 に答える