想這是我的用戶控制器: -在rails中的會話問題?
class UsersController < ApplicationController
def show
@user = session[:user]
end
def prepare
session[:user]= User.find(:first)
redirect_to :action => 'show'
end
def update
@user = session[:user]
@user.name = 'rai'
redirect_to :action => 'show'
end
end
信息查看show.html.erb
<%= @user.name %>
Show page
<%= link_to 'Update', :action=> 'update' %>
現在解釋的問題:--- 假設第一次用戶打開瀏覽器
http://localhost:3000/users/prepare
O/p將是:---
現在,當他在更新點擊,他將得到的輸出是這樣的: -
rai Show page Update
但是這不應該發生的原因
首先當是在做準備,其中值從DB fecthced行動,其mohit。然後他被重定向以顯示即將會話中的值。即莫希特
現在當上他被重定向時從會話值存儲到用戶實例和用戶實例的名稱屬性更新更新用戶點擊已修改爲萊。最後重定向到顯示頁面。
現在在這個頁面當用戶的名字顯示其顯示rai ..多數民衆贊成在問題爲什麼?? 原因會話應存儲在同一莫希特值的原因,我們havnt取得了會話中的任何改變..
雅那發生了什麼。我能理解,但我無法理解爲什麼會發生.. !!! – 2010-04-29 09:30:50
在ruby變量中保存引用,而不是值。所以當你分配時,你正在複製引用。 http://ruby-doc.org/docs/Newcomers/ruby.html#objects – Voyta 2010-04-29 10:33:24