2013-06-09 3 views
0

В моем списке TODO приложении, у меня есть следующий код в моем ListsController:Ошибки при оказании действия от другого контроллера

def create 
    @list= current_user.lists.build(params[:list]) 
    if @list.save 
    flash[:notice]= "New List created" 
    redirect_to controller: "pages",action: :home 
    else 
    render 'pages/home' 
    end 
end 

страница/home.html.erb

<% if signed_in? %> 
    <%= render 'home_signed_in' %> 
<% else %> 
    <%= render 'home_not_signed_in' %> 
<% end %> 

«home_signed_in. html.erb "и" home_not_signed_in.html.erb "присутствуют в каталоге страниц. Поэтому, когда в списке я пытаюсь создать не получает спасение, этот код запускается на выполнение в ListsController:

else 
    render 'pages/home' 
    end 

И следующая ошибка брошено:

Missing partial lists/home_signed_in, application/home_signed_in with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: 
    * "/home/lnreddy/my_rails_projects/todo_app/app/views"

Почему не искать в страницах/папки? Я смущен.

ответ

1

Использование render в вашем контроллере не отображает это действие, оно отображает вид.

Вы представляете pages/home в контексте ListController, поэтому, когда этот вид ищет частичный «home_signed_in», он просматривает папку текущего контроллера, которая является списком контроллера (и папкой списков).

Если вы хотите, чтобы представление отображало частичное из той же папки, укажите его имя папки, например. 'Главная/home_signed_in. Или, если частичная информация будет передаваться через несколько контроллеров, переместите ее в папку приложения (все представления возвращаются к чтению из этой папки, как указано в сообщении об ошибках).

См. http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials для получения дополнительной информации о частицах.

+0

Большое спасибо. Это то, что я подозревал. – lnreddy

Смежные вопросы