2016-11-07 88 views
0

我的ruby和sinatra应用程序目前允许用户查看和编辑所有创建的列表,我还没有弄清楚如何仅向用户显示列表创造它们。我如何让用户只能查看他们的列表与ruby和sinatra

这里是我的lists_controller是什么样子:

class ListsController < ApplicationController 

get "/lists" do 
    redirect_if_not_logged_in 
    @lists = List.all 
    erb :'lists/index' 
end 

get "/lists/new" do 
    redirect_if_not_logged_in 
    @error_message = params[:error] 
    erb :'lists/new' 
end 

get "/lists/:id/edit" do 
    redirect_if_not_logged_in 
    @error_message = params[:error] 
    @list = List.find(params[:id]) 
    erb :'lists/edit' 
end 

delete '/lists/:id/delete' do 
    @list = List.find_by_id(params[:id]) 
    @list.delete 
    redirect to '/lists' 
end 

post "/lists/:id" do 
    redirect_if_not_logged_in 
    @list = List.find(params[:id]) 
    unless List.valid_params?(params) 
    redirect "/lists/#{@list.id}/edit?error=invalid list" 
    end 
    @list.update(params.select{|a|a=="todo_name"|| a=="todo_list"}) 
    redirect "/lists/#{@list.id}" 
end 

get "/lists/:id" do 
    redirect_if_not_logged_in 
    @list = List.find(params[:id]) 
    erb :'lists/show' 
end 

post "/lists" do 
    redirect_if_not_logged_in 
    unless List.valid_params?(params) 
    redirect "/lists/new?error=invalid list" 
    end 
    List.create(params) 
    redirect "/lists" 
end 
end 

回答

0

问题在于内

@lists = List.all 

在Rails W/ActiveRecord的(假设你的List模型belongs_toUser),你可以代替这样做

@lists = List.where(user_id: current_user.id) 
+0

我给了th在拍摄时,现在当我创建一个新列表时,该列表不会显示在我的列表页面上。 – Chris

+0

是否可以共享List对象的定义方式? – whodini9

相关问题