0
私は多くの同様のSO投稿を読んでいますが、私がここにいるルーティングエラーを解決するものは見つかりません。私は基本的なwikiのタイプのアプリを作ってるんだと(false
からuser.premium?
ためのブール値を変更)premium
からstandard
へのユーザーの格下げは、私がしたいときに、このアクションはまたのためのブール値を変更するには、すべての彼らのwikis
のでwiki.private?
がfalse
です。リンクはdevise/registrations/edit.html.erb
ページにある:データベース内のブール値を更新するために `link_to`を使用する
<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
です:
match "users/:id/downgrade" => "users#downgrade", :as => "downgrade_user", via: [:get, :post]
アクションが正常にユーザーをダウングレードが、私:
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
そして、ここでは、ルートでありますすべてのプライベートを公開しようとするとテンプレートの不足エラーが発生する:
Missing template users/downgrade, application/downgrade with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee]}.
これはルーティングが間違っていると思われます。私がどこに間違っているのか誰にでも見える?
偶然、ユーザー登録の編集ページがもう一度表示されます。 – Liz
[OK]をクリックし、_downgrade_アクションの最後に追加します。 – Leito
ああ!完璧。ありがとうございました! – Liz