2011-08-15 9 views
0

最近、プロジェクトコントローラ(projects_controller.rb)に新しいメソッド(「ヘルプ」と呼ばれる)を追加し、viewsディレクトリに「help.html.haml」を作成しました。link_to関数を使ってレールのメソッドにリンクする

私はroutes.rbをして次のルートを追加しました:

resources :users, :only => [:new, :create, :edit, :update, :help] 
resources :projects, :module => 'users' do 
    get :help, :on => :member, :as => :help 
end 

を私の目標を支援するためにリンクする別のビュー(のは、それをindex.html.haml呼びましょう)上のリンクを作成することです。 html.haml。注:現時点では私のルートは、次のURLでヘルプを表示するように設定されていますhttp://localhost:3001/projects/id/help

残念ながら、私は上記のヘルプURLにリンクするコードを記述する方法がわかりません。

%li= link_to 'quick help', project_path(@project) 

が、このコードは私だけがhttp://localhost:3001/projects/idに取る:今のところ私はindex.html.hamlに次のコードを持っています。 link_to関数を使用してURLに「/ help」を追加することは可能ですか?これを行うにはより良い方法がありますか?

私は心からお礼を申し上げます。あなたのお時間をありがとうございました!

答えて

1

のは、あなたが定義したルートのコンポーネントを見てみましょう:

get :help, :on => :member, :as => :help 
  • 最初のパラメータは、それが呼び出されるアクションの名前だ、:helpです。
  • 2番目の部分は:on => :memberです。これは、アクションが特定のレコードにスコープが設定されていることを意味します。だから、あなたはそれを呼び出すためにIDを渡す必要があります。
  • 3番目の部分である:as => :helpは、URLの生成に使用できるヘルパーメソッドの名前を定義します。それはあなたが探しているものです。

基本的に、help_project_path(@project)は必要なURLを生成します。だから、リンクは次のようになります。あなたが本当に:as => :helpパスを必要としません

%li= link_to 'quick help', help_project_path(@project) 

注意、それはデフォルトでhelpでなければなりません。別のヘルパー名が必要な場合は、一般的に使用されます。

私が指摘したいことは、「help.html.hamlへのリンク」を作成していないことです。projectsコントローラのhelpアクションへのリンクを作成していることです。必要であれば、アクションはどこかにリダイレクトできます。ビューをレンダリングする必要はありません。私はちょうどこれを言っています。なぜなら、あなたはまだこれが少し新しいように思えます。

+1

アンドリュー、ありがとう、そんなに仲間!私はあなたにすべてをとても明確に説明する時間をとっていただきありがとうございます。それは私が本当に楽しむものです、あなたはそれを推測しました。私はRORには比較的新しいので、より詳細に説明し、より良くなると私は前進していきます。本当にありがとう! –

0

ヘルプメソッドは何をしますか?それは各プロジェクトのための助けの方法であるか、それは一般的なプロジェクトのための助けです。次のようにルートを作成することができます

match '/projects/help/:id' => 'projects#help', :via => :get 

のために:あなたはどちらかREST方式、すなわちを選択し、あなたの要件ごとに、など、GET、POST、PUT、経由。

一般的なプロジェクトのヘルプページを作成しようとしている場合、これは役に立たないかもしれません。 /projects/<>というURLがある場合、RailsはそのURLをプロジェクトの表示ページにルーティングしようとし、<>をプロジェクトのIDとして使用しようとします。

あなたはオブジェクト@projectためプロジェクトショーページに移動しますPROJECT_PATH(@project)で、使用しているのlink_to。

最後に、これはあなたがすべきことです。私は一般的なページに使用される別のコントローラを作成することをお勧めします。あなたは、コントローラOtherController

match '/help', :controller => 'other', :action => 'help', :via => :get 

を持っている。そしてビューのhelp.html.erbページを作成し、言います。これはあなたのために働くことを望みます。

関連する問題