2017-01-19 7 views
1

14章でインストラクタが対応するビューテンプレートなしでコントローラにアクションを作成し、「テンプレートがありません」というエラーが表示されたときにインストーラが正しく動作します。あなたの助けを借りてその問題に至っている人は誰でも感謝します。Lynda Ruby on Rails 4の必須トレーニングが動作しない

エラー:テンプレートが見つかりません テンプレートアクセスがありません/ {{locale => [:en]、:formats => [ :html]、:variants => []、:ハンドラ=> [:erb、:builder、:raw、:ruby]} * "/ var/www/html/railsLdapTest/app/views" * "/usr/local/rvm/gems/ruby-2.1.8/gems/devise-4.0.0/app/views"

"attempt_login" と呼ぶ

ビュー:

<% @page_title = "Admin Login" %> 

<div class="login"> 
<%= form_tag(:action => 'attempt_login') do %> 
<table> 
<tr> 
    <td><%= label_tag(:username) %></td> 
    <td><%= text_field_tag(:username) %></td> 
</tr> 
<tr> 
    <td><%= label_tag(:password) %></td> 
    <td><%= password_field_tag(:password) %></td> 
</tr> 
<tr> 
    <td>&nbsp;</td> 
    <td><%= submit_tag("Log In") %></td> 
</tr> 
</table> 
<% end %> 
</div> 

リンダアクションコード:

def attempt_login 
    if params[:username].present? && params[:password].present? 
    found_user = AdminUser.where(:username => params[:username]).first 
    if found_user 
     authorized_user = found_user.authenticate(params[:password]) 
    end 
    end 

    if authorized_user 
    # mark user as logged in 
    session[:user_id] = authorized_user.id 
    session[:username] = authorized_user.username 
    flash[:notice] = "You are now logged in." 
    redirect_to(:action => 'index') 
    else 
    flash[:notice] = "Invalid username/password combination." 
    redirect_to(:action => 'login') 
    end 
end 

私のコードは、LDAP経由でデータベースに接続するように変更:

def attempt_login 
    if params[:username].present? && params[:password].present? 
    ldap = Net::LDAP.new 
    ldap.host = '172.16.15.3' 
    ldap.port = 389 
    ldap.auth params[:username], params[:password] 

    if ldap.bind 
     ldap.search(
     base: "DC=abc,DC=net", 
     filter: Net::LDAP::Filter.eq("mail", params[:username] + "@abc.net"), 
     attributes: [ 'objectGUID','cn', 'telephoneNumber' ], 
     return_result:true 
    ) do |entry| 
     @var1 = entry.telephoneNumber 
     authorized_user = entry.cn 
     end 

     if authorized_user 
     # mark user as logged in 
     session[:user_id] = authorized_user 
     session[:username] = authorized_user 
     flash[:notice] = "You are now logged in." 
     redirect_to(:action => 'index') 
     else 
     flash[:notice] = "Invalid username/password combination." 
     redirect_to(:action => 'login') 
     end 
    end 
    end 
end 
+1

少なくとも機能していない部品には、いくつかのコードを含める必要があります。 – Iceman

+0

あなたの意見から問題が発生しているようです(テンプレートはありません)。アプリを見ることなく、確かに知る方法はありませんが、テンプレートへのリンクが正しい構文とパスを持っているかどうかを確認します。 – the12

+0

@ the12 Lyndaビデオのインストラクターは、「試行ログオン」のテンプレートを作成しません。彼は単にそれを既存のコントローラに追加するだけです。 –

答えて

0

あなたが得ようとしていますそのエラーは、対応するビューがないコントローラでアクションを作成しているときはいつでも発生します。 Lynda.comのインストラクターは、おそらく教えることのできる瞬間としてそれを使用するのではなく、「オフエア」の問題を修正しました。

対応するビューテンプレートを作成すると、私の言いたいことが分かります。

私の答えを持つ任意の疑いがある場合、この確認してください:どのアプリ/ビューディレクトリ内の関連するディレクトリが存在し、各コントローラについて

:特に http://guides.rubyonrails.org/action_view_overview.html

言う部分をそのコントローラに関連付けられたビューを構成するテンプレートファイルを保持します。これらのファイルは、各コントローラーのアクションの結果であるビューを表示するために使用されます。私は、これは全くのデータフローに関するものではありませんので、この例では、CRUDアクションを作成するつもりはありません

class GuidesController < ApplicationController 

end 

は例えば、私はGuidesControllerを作成して言うことができます。

class GuidesController < ApplicationController 
    def book 
    end 
end 

この回答の重要性は、ビューに直接マップする必要があることです。だからあなたはビューに行き、ガイドと呼ばれるディレクトリを作成します。

これは、マッピングの第2段階であり、ActionViewの配線方法です。

GuidesControllerはガイド内のビュー、つまりパスでのみ動作し、コントローラが探しているものと同じです。

これは標準的なRailsの規約です。

ここで、view/guidesディレクトリ内にbook.html.erbを作成する必要があります。これは、ActionViewの仕組みはブックのメソッドを取り、book.html.erbファイルにマップするからです。

それの内には、行う必要がある最後の事はそれをルートを与えるある

<p>Hey, I am in the book view</p> 

を置くことができます。だから、routes.rbをして:作成し、レールのDB:データベースがインストールされるように、あなたのアプリケーションの作成後に移行

get 'book' or better yet get 'guides/book' 

は、以前レールデシベルを行っていることを確認してください。今

あなたがローカルホストに行く:

Hey, I am in the book view 

をだからここにあなたが私たちのコントローラを持っており、それがアクション名を持つ、アクション名が特定のファイルにまで配線されている:3000 /ガイド/それがレンダリングされます予約正確な名前を付ける必要があります。技術的には、これらの規則を無効にすることはできますが、それはより多くのコードやコードを書くことはめったに良いことではありません。

また、Web開発コースの審査であなたの宿題をしてください。その多くは、教材や教材が本当に平凡です。

関連する問題