如何使用 simple_form 解决未定义方法 `to_key' 错误
How to solve undefined method `to_key' error with simple_form
尝试使用 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
观点,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
谁能告诉我如何解决这个错误?
使用 ActiveRecord 时,all
方法返回所谓的关系,即多个数据库记录的集合。
使用simple_form_for
构建表单时,只能传入单个数据库记录,不能传入整个关系。 simple_form 对传入 simple_form_for
的任何内容调用 to_key
,因为它假定它是单个记录。
我不确定你的意图,但你可以试试这个解决方案,它构建了一个表单,用户可以在其中进行全新的课程查询:
<%= simple_form_for(CourseQuery.new) do |m| %>
<div class="modal-body">
<%= m.input :message ,label: false %>
</div>
<% end %>
您似乎需要自定义表单 url。你必须这样做:
route.rb
您必须创建新的 post 方法来保存您的表单。我尝试这条路线使用 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。
尝试使用 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
观点,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
谁能告诉我如何解决这个错误?
使用 ActiveRecord 时,all
方法返回所谓的关系,即多个数据库记录的集合。
使用simple_form_for
构建表单时,只能传入单个数据库记录,不能传入整个关系。 simple_form 对传入 simple_form_for
的任何内容调用 to_key
,因为它假定它是单个记录。
我不确定你的意图,但你可以试试这个解决方案,它构建了一个表单,用户可以在其中进行全新的课程查询:
<%= simple_form_for(CourseQuery.new) do |m| %>
<div class="modal-body">
<%= m.input :message ,label: false %>
</div>
<% end %>
您似乎需要自定义表单 url。你必须这样做:
route.rb
您必须创建新的 post 方法来保存您的表单。我尝试这条路线使用 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。