私はRubyの新機能です。私は1つの疑問、コントローラメソッドをビューから呼び出す方法を持っています。ビューからコントローラメソッドを呼び出すRuby on rails
私のコントローラ
def course_user_count
@courses=Course.all
@courses.each do |course|
@count=course.students.count
end
私は
私はRubyの新機能です。私は1つの疑問、コントローラメソッドをビューから呼び出す方法を持っています。ビューからコントローラメソッドを呼び出すRuby on rails
私のコントローラ
def course_user_count
@courses=Course.all
@courses.each do |course|
@count=course.students.count
end
私は
私は非常にあなたがあなたのビューから「この@count
変数を呼び出す」する必要があると言うとき、あなたは何を意味するか理解していません。コントローラでその変数を設定していませんか?その場合、関連するビューで自動的にアクセス可能になります。
第2に、あなたのメソッドは、各コースの学生数を読み込み、変数@count
に割り当てます(変数を "呼び出す"ことはできません)。この変数が書き込まれるたびに、その前の値が上書きされるので、書き込まれたメソッドは役に立たない。私はあなたがここで何をしようとしているのかよくわかりません。おそらく各コースのこの値を事前に設定してコントローラを「初期化する」でしょうか?
コントローラのshow
メソッドは、関連するデータベースの1行の情報を表示します。目的は、そのビュー内のコースの学生数を示すことであるならば、私はapp/controllers/course_controller.rb
にこのような何かを記述します。
class CourseController < ApplicationController
def show
@course = Course.find(params[:id]) # Here I assume that the url is .../courses/<id>
@student_count = @course.students.count
end
...
end
テンプレートapp/views/courses/show.html.erb
でこのような変数の値を表示します。他では
<%= @student_count %>
言葉では、私はコースの学生数を返すためにコントローラにメソッドを書くのではなく、ビューに表示する必要があるものを渡すのと同じように、ビューのパラメータとして渡します。ビューは非常に簡単な操作ではアクセスできません。実際には@course.students.count
、bそれは味の問題です。
しかし、show
テンプレートが表示されるたびに、計算するのがより複雑で、必要のない値をコントローラに定義することは意味があります。そのメソッドをビューから呼び出せるようにするには、Keithが彼の答えで述べたように、このメソッドをヘルパーメソッドとして宣言しなければなりません。例えば、app/controllers/course_controller.rb
内のすべてのコースの総学生数を返すメソッド:
class CourseController < ApplicationController
helper_method :total_student_count
def total_student_count
total_count = 0
Course.all.each do |c|
total_count += c.students.count
end
total_count
end
...
end
は、そのメソッドの戻り値を表示するようにapp/views/courses/
の下で任意のテンプレートでは、このようなメソッドを使用します。
<%= total_student_count %>
お使いのコントローラが変数を介して、あなたのビューにアクセスすることが私の見解をcourse.view.html.erb方法からこの@count変数を呼び出す必要があります:
@controller
デフォルトで利用可能です。私はもちろん、その特定のビューに関連付けられているコントローラについて話しています。あなたのケースでは
:あなたのビューで次に
helper_method :course_user_count
、:あなたのコントローラの上部に
@controller.course_user_count
これはRails 5の場合には当てはまりませんが、テストされていない可能性もあります。 – edwardmp
あなたはヘルパーメソッドとして、あなたの意見に利用可能たいメソッドをマークすることができますcourse_user_countを呼び出して結果を保存することができます。
<% count = course_user_count %>
この回答は受け入れられるはずです... – mahatmanich
@Keith a small 'helper_method:course_user_count'を更新してください。 –
この答えは、Rails 4.0.0で私にとって役に立ちました。どうもありがとうございました! –
<% count = course_user_count %>
0123として表示 呼び出し方法では、ヘルパー・メソッド
としてメソッド名を宣言
[ビューからコントローラのメソッドを呼び出すことはできますか(ヘルパーから呼び出すと理想的です)](http://stackoverflow.com/questions/8906527/can-we-call-a-controllers-method-私たちは、ヘルパーから呼び出すことから理想的には) – lulalala