2015-09-25 24 views
3

我想顯示登錄學生姓名和消息。如何在軌道上顯示紅寶石登錄學生寫入消息

登錄後學生可以寫郵件和發送與療程。他送上面顯示在同一頁面,他/她的名字和消息

我的名字的消息,但消息字段提取是在所有消息數據庫。如何顯示特定的學生姓名和消息?

這裏是我的代碼

controller.erb

class CourseQueriesController <ApplicationController 
 
     def index 
 
     @course_queries = CourseQuery.all 
 
     @course_query = CourseQuery.new 
 
     end 
 
     def create 
 
     @course_query = CourseQuery.new(student_id: current_student.id, coach_id: "2", message: params[:course_query][:message]) 
 
     if @course_query.save 
 
      redirect_to course_queries_path, notice: 'Query was successfully send.' 
 
     else 
 
      render :new 
 
     end 
 
     end 
 
    end 
 

 
    course_queries/index.html.erb 
 

 
    <% @course_queries.each do |queries| %> 
 
     <p><b><%= current_student.name %></b></p> 
 
      <%= queries.message %> 
 
    <% end %> 
 
    <%= simple_form_for (@course_query) do |f| %> 
 
     <%= f.input :message %> \t \t 
 
     <%= f.button :submit , "Send or press enter"%> \t \t \t \t \t \t 
 
    <% end %> 
 

 

 

+0

嘗試'<%= current_student.queries.message%>' – Pavan

+0

我試過了。它顯示錯誤像這樣的'undefined method' queries'for#' – SreRoR

+0

你可以發佈問題中的模型之間的關聯嗎? – Pavan

回答

2

您應該添加has_many :course_queriesStudent模型

#student.rb 
class Student < ActiveRecord::Base 
    has_many :course_queries 
    ... 
end 

和Controller在index方法變更@course_queries = CourseQuery.all@course_queries = current_student.course_queries

現在<%= queries.message %>將只顯示course_query的的current_student

+1

謝謝:)。它工作。你現在幫了我很大忙 :) – SreRoR

3

消息如何顯示一個特定學生的姓名和留言

你需要有relevant associations在您的模型中建立,就像Pavan寫的一樣。

我會給你爲什麼這是很重要的一些詳細信息...


ActiveRecord的

其中一個主要的原因Rails的工作這麼好,是它可以幫助您創建的方式&管理對象。在OOP中,對象構成了從init命令到用戶輸入響應的所有內容,Ruby是此結構的主要代表。

Rails建立在Ruby上,因此也是面向對象的。 使用ActiveRecordMVC structure &類給你一個平臺,從中可以填充和操作對象:

enter image description here

因此,你不應該處理應用程序的交互,以此來編輯數據庫或「顯示登錄消息」 - 它應該是一種調用對象的對象

對象 - 在軌道的情況下 - 建在models。模型數據可用於controllersviews

這似乎是缺乏你的代碼。如果你能解決它,你的代碼將變得非常簡單和更強大......


協會

我會做這樣的事情:

#app/models/student.rb 
class Student < ActiveRecord::Base 
    has_many :queries 
    has_many :coarse_queries, through: :queries 
end 

#app/models/course.rb 
class Course < ActiveRecord::Base 
    has_and_belongs_to_many :coaches 
    has_many :queries 
    has_many :student_queries, through: :queries 
end 

#app/models/coach.rb 
class Coach < ActiveRecord::Base 
    has_and_belongs_to_many :courses 
    has_many :queries 
end 

#app/models/query.rb 
class Message < ActiveRecord::Base 
    belongs_to :course 
    belongs_to :student 
    belongs_to :coach (maybe) 
end 

這種結構將允許學生髮送查詢到特定課程,根據需要選擇教練。重要的是,這會設置您的關聯,這樣您就不必在每次要填充各種對象時調用多個類。

#app/controllers/course_queries_controller.rb 
class CourseQueriesController <ApplicationController 
    def index 
    @queries = Query.all 
    @query = current_student.queries.new 
    end 

    def create 
    @query = current_student.queries.new query_params 
    if @query.save 
     redirect_to course_queries_path, notice: 'Query was successfully send.' 
    else 
     render :new 
    end 
    end 

    private 

    def query_params 
    params.require(:query).permit(:message).merge(coach_id: "2") 
    end 
end 

#app/views/queries/index.html.erb 
<% @queries.each do |query| %> 
    <p><b><%= query.student.name %></b></p> 
     <%= query.message %> 
<% end %> 

<%= simple_form_for @query do |f| %> 
    <%= f.input :message %>  
    <%= f.button :submit , "Send or press enter"%>       
<% end %>