[英]Ruby on rails get id from instance variable
我有一個實例變量@user
因此在HTML <%=link_to @user %>
給出了結果:
{"id"=>2, "restaurant"=>"sea food", "password"=>"123", "name"=>"a", "email"=>"a", "telephone"=>"123", "created_at"=>"2016-10-09T04:00:24.010Z", "updated_at"=>"2016-10-09T04:00:24.010Z"}
我想獲取id的值,但是當我寫: <%=link_to @user[:id] %>
它返回給我的結果是/restaurant/home
,這是我的home函數在我的餐廳控制器和我不明白為什么。
這是我的控制器:
class RestaurantController < ApplicationController
def home
@user = session['loginedUser']
end
def login
end
def checkLogin
@user = User.find_by_restaurant(params[:user][:restaurant])
if @user != nil && @user[:password] == params[:user][:password]
session['loginedUser'] = @user
redirect_to :controller=>'restaurant',:action=>'home'
else
session['loginedUser'] = nil
# redirect_to :controller=>'restaurant',:action=>'login'
end
end
def logout
session['loginedUser'] = nil
redirect_to :controller=>'restaurant',:action=>'home'
end
end
有人可以幫忙嗎? 非常感謝。
您不應在會話對象中保存復雜的對象。 默認情況下,會話數據保存在cookie中,並且許多瀏覽器僅接受cookie,直到4kB。 也存在其他問題。
我建議進行此更改:
def checkLogin
...
session['loginedUser'] = @user.id
...
end
def home
@user = User.find session['loginedUser']
end
您的鏈接應如下所示
<%=link_to id: @user.id %>
。 這種解決方案不是真正的Rails一樣。 應該有合適的幫手。 您可以使用rake routes | grep home
檢查rake routes | grep home
rake routes | grep home
。 您會看到類似xxx_xxx_home_xxx_restaurant /restaurant/home(.format) restaurant#home
。 第一部分是助手名稱,您可以添加_path
或_url
。 可能類似於<%=link_to xxx_xxx_home_xxx_restaurant_path id: @user.id %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.