0

このコードをhamlのリンクまたはボタンとして実行するにはどうすればよいですか:

current_user.update_attribute :admin, true

私はそれを作ろうとしているので、サイトのセクションを管理者にするセクションがあります。これは、devise にある wiki から管理者アカウントを作成することの一部です。

4

2 に答える 2

0

おそらく最も簡単な方法は、ユーザーの編集フォームにチェックボックスを作成することです。これは、管理者ブール モデル フィールドに対応します。次に、更新アクションが User レコードを保存すると、そのフィールドがフォームに含まれているため、属性が更新されます。

-form_for @user do |f|
    %p
        = f.label :admin
        %br
        = f.check_box :admin 

当然、更新ユーザー フォームへのアクセスを何らかの方法で制限して、管理者のみが表示できるようにする必要があります。ただし、これは別の問題です。お役に立てれば!

于 2013-10-07T02:02:48.517 に答える
0

これに対する私の解決策を共有したかっただけです。非常に迅速に行うのが最も良い方法のようです。以前に投稿するのを忘れていました:

私は自分のメールを基本的に、常に管理者になるマスターアカウントにしました. または、最初のアカウントを設定するためにデータを本番環境にレーキすることもできます。そこから、任意の管理者が他の管理者を設定できます! 管理者を設定するために、Devise 用に生成されたユーザー モデルに admin というブール値を追加しました。

rails g migration AddAdminToUsers admin:boolean

admin_updater.html.haml

- if current_user.email == 'shravvmehtaa@gmail.com'
    = form_for :emails, url: make_admin_emails_path, :html => {:class => "form-inline"} do |f|
      .form-group
        %span
          %p{:style => "margin: 0px;"}
            = f.label :email, "Email:"
          %p{:style => "float: left;"}
            = f.text_field :email, :style=> "width: 200px;", :class => "form-control"
          %p{:style => "margin-left: 10px; float: left;"}
            = f.submit "Make Admin", :class => 'btn btn-success'
    = form_for :emails, url: delete_admin_emails_path, :html => {:class => "form-inline"} do |f|
      .form-group
        %span
          %p{:style => "margin: 0px;"}
            = f.label :email, "Email:"
          %p{:style => "float: left;"}
            = f.text_field :email, :style=> "width: 200px;", :class => "form-control"
          %p{:style => "margin-left: 10px; float: left;"}
            = f.submit "Delete Admin", :class => 'btn btn-danger'
    %b Admins:
    - @users = User.all
    - @users.each do |user|
      - if user.admin?
        %div{:style => "border: 2px solid black; background-color: white; padding: 5px; height: 63px; width: 400px; margin-bottom: 10px;"} 
          %span{:style => "float: left;"}  
            = image_tag (user.profile_pic)
          %span{:style => "float: left; margin-left: 10px;"}
            = user.name
            %br
            = link_to(user.email, "mailto:" + user.email)

コントローラ

class MemberController < ApplicationController
  before_filter :authenticate_user!, :except => [:show, :index]
  layout "dashboard"

  def make_admin
    @user = User.find_by_email(params[:emails][:email])
    unless @user.nil?
      @user.update_attribute(:admin, true)
    end
    redirect_to '/dashboard/develop'
  end

  def delete_admin
    @user = User.find_by_email(params[:emails][:email])
    unless @user.nil?
      @user.update_attribute(:admin, false)
    end
    redirect_to '/dashboard/develop'
  end

end

これは、上記のコードの一部からの結果の出力です。個人的に Facebook と統合したので、アカウント作成後にメール情報を取得して管理者を設定する簡単なコードが必要でした。 ここに画像の説明を入力

于 2013-11-08T15:50:41.640 に答える