0

レールの変数が参照されたり、値が割り当てられたりする方法に非常に混乱しています。

次の行/ステートメントの意味を誰か教えてもらえますか?

(私は C の世界の出身で、Ruby/Rails の構文を理解するのに「非常に」苦労しています)

<1>ここで:nameand:emailを変数として宣言していますか? また、なぜandcolonの前に a があるのですか?nameemail

attr_accessible :name, :email

<2> 変数への代入 上記の例から、nameemailが変数である場合、それらに値を設定するにはどうすればよいでしょうか。

def foo
  name = 'New Name'
end

または

def foo
  :name => 'New Name'
end

?

4

1 に答える 1

0

Rails では、テーブルからフィールド名を抽出する ORM を使用します。たとえば、 table がある場合items:

|id | name    |
|1  | a string|

がありclass Item、インスタンスとしましょうitem。次に、次のものにアクセスできます。

item.id      # -> 1
item.name    # -> a string

あなたの例によると:

def foo
  name = 'New Name'  # You are not setting the variable, you are creating a local variable called name
  # To set variable
  self.name = 'a name'
end

または

def foo
  :name => 'New Name' # you are returning a hash, but you are lacking brackets, not setting a variable
end

この行を使用すると、次のattr_accessible :name, :emailことができます。

Item.new({
  name: 'asd',
  email: 'sad'
})

:emailたとえば、 を追加しないattr_accessibleと、前の例では次のような警告が表示されます。

Can't mass-assign protected attributes: email

これは、次のようなコントローラーでパラメーターを受け取る場合に役立ちます。

Item.new(params[:item])

params がハッシュであることを確認してください。Rails サーバー コンソールで確認できます。

于 2013-03-01T19:55:42.173 に答える