2015-10-01 55 views
2

當嘗試使用simple_form,我遇到了以下錯誤解決未定義的方法`TO_KEY」錯誤: enter image description here如何使用simple_form

undefined method `to_key' for #<CourseQuery::ActiveRecord_Relation:0x007f070689bae8>

這是相關負責人:

class Students::DashboardController < ApplicationController 
    before_filter :authenticate_student! 

    def index 
    @course_query=CourseQuery.all 
    end 

    def show 
    end 

    def course_queries_details 
    @course_queries = current_student.course_queries 
    @course_query = CourseQuery.new 
    end 
end 

The view,views/students/dashboard/course_queries_details.html.erb:

<%= simple_form_for (@course_query) do |m| %> 
    <div class="modal-body"> 
    <%= m.input :message ,label: false %> 
    </div> 
<% end %> 

的config/routes.rb文件:

namespace :students do 
    root to: "dashboard#show" 
    get 'course-queries-details', to: 'dashboard#course_queries_details' 
    resources :students 
end 

誰能告訴我如何解決這個問題?

回答

0

它看起來像你需要自定義表單網址。你必須這樣做:

route.rb

您必須創建新的崗位的方法來保存表單。我嘗試這個路由使用的Rails 3:

namespace :students do 
    root to: "dashboard#show" 
    get 'course-queries-details', to: 'dashboard#course_queries_details' 
    post 'save-course-queries-details', as: 'save_course_queries_details', to: 'dashboard#save_course_queries_details' 
    resources :students 
end 

然後,你必須創造新的方法來保存表單

<%= simple_form_for @course_query, :url => students_save_course_queries_details_path, :method => :post %> 

這是文章how to custom simple_form_for url

+0

@穆罕默德謝謝。我已經通過相同的方式解決了它 – SreRoR

1

使用ActiveRecord時,all方法返回所謂的關係,即多個數據庫記錄的集合。

使用simple_form_for構建表單時,只能傳入單個數據庫記錄,而不能傳遞整個關係。對於傳入simple_form_for的任何內容,simple_form都會調用to_key,因爲它假設它是單個記錄。

我不確定你的意圖,但你可以試試這個解決方案,它建立了一個表格,用戶可以做出一個全新的課程查詢:

<%= simple_form_for(CourseQuery.new) do |m| %> 
    <div class="modal-body"> 
    <%= m.input :message ,label: false %> 
    </div> 
<% end %> 
相關問題