2016-06-22 2 views
0

Я прочитал много подобных сообщений SO, но не могу найти тот, который решает ошибку маршрутизации, которую я здесь. Делаю базовое приложение вики типа и когда пользователь понижены от premium к standard (изменяющие логическое значение для user.premium? к false), я хочу, чтобы это действие также изменить булевы для всех их wikis так wiki.private? является false. Ссылка на devise/registrations/edit.html.erb страницы:Использование `link_to` для обновления Boolean в базе данных

<h3>Change My Account Type</h3> 
    <% if current_user.premium %> 
    <p><%= link_to "Downgrade my account from premium.", downgrade_user_path(current_user), confirm: "Are you sure?" %></p> 
    <% else %> 
    <p><%= link_to "Upgrade to premium!", new_charge_path %> 
    <% end %> 

А вот users_controller:

class UsersController < ApplicationController 
    def show 
    @user = User.find(params[:id]) 
    @wikis = current_user.wikis 
    @private_wikis = @wikis.where(private: true) 
    @public_wikis = @wikis.where(private: false) 
    end 

    def downgrade 
    @wikis = current_user.wikis 
    @user = User.find(params[:id]) 
    @user.update_attribute(:premium, false) 
    @wikis.each do |wiki| 
     wiki.update_attribute(:private, false) 
    end 
    end 
end 

А вот маршрут:

match "users/:id/downgrade" => "users#downgrade", :as => "downgrade_user", via: [:get, :post] 

Действие успешно понижен пользователь, но я получить недостающую ошибку шаблона при попытке сделать все частные wikis общественностью:

Missing template users/downgrade, application/downgrade with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee]}. 

Это заставляет меня думать, что это что-то с маршрутизацией, которая идет не так. Может ли кто-нибудь увидеть, где я здесь ошибся?

ответ

0

После того, как вы выполните всю бизнес-логику для понижения рейтинга пользователя, что вы хотите сделать?

def downgrade 
    @wikis = current_user.wikis 
    @user = User.find(params[:id]) 
    @user.update_attribute(:premium, false) 
    @wikis.each do |wiki| 
     wiki.update_attribute(:private, false) 
    end 
    redirect_to user_registration_path 
    end 
+0

Да, в идеале просто перейдите на страницу редактирования регистрации пользователя еще раз. – Liz

+0

Итак, затем добавьте это в конце действия _downgrade_. – Leito

+0

Ahhh! Отлично. Спасибо! – Liz