我正在尝试根据代表培训课程的对象使用FORM_FOR在Rails 4中创建表单。在加载页面之前,该应用程序检查当前用户是否已经注册了该课程。如果没有,则表格上的"提交"按钮会创建一个新的"注册",以标记Inbips表中的课程ID和用户ID。这正常工作。
如果用户已经注册,则我希望提交按钮具有不同的功能 - 以获取特定注册记录的请求,并在屏幕上显示其详细信息。本质上,就像重新指导到"注册/ID"。但是,这是不起作用的。
如果未注册用户,这是显示的表单。它在注册控制器中触发了对创建操作的邮政请求(并且起作用):
<%= form_for course, :url => {:controller => "signups", :action => "create"}, :method => "post" do |f| %>
<%= hidden_field_tag :course_id, course.id %>
<%= f.label :"Course Title" %>
<%= f.text_field :courseTitle, class: 'form-control' %>
<%= f.label :"Course Title" %>
<%= f.text_field :courseTitle, class: 'form-control' %>
<%= f.label :"Detailed Description Of Course Dates & Times" %>
<%= f.text_area :courseDatesAndTimes, class: 'form-control' %>
<%= f.label :"General Course Location eg 'Malaga'" %>
<%= f.text_field :courseGeneralLocation, class: 'form-control' %>
<%= f.label :"Exact Course Address including Postal Code" %>
<%= f.text_field :courseExactAddress, class: 'form-control' %>
<%= f.label :"Course Description" %>
<%= f.text_area :courseDescription, class: 'form-control' %>
<%= f.label :"Maximum Number of Students" %>
<%= f.text_field :courseMaximumNumberStudents, class: 'form-control' %>
<%= f.label :"Normal Course Price" %>
<%= f.text_field :courseNormalPrice, class: 'form-control' %>
<%= f.label :"'Listener' Course Price" %>
<%= f.text_field :courseListenerPrice, class: 'form-control' %>
<%= f.submit "Sign Up!", class: "btn btn-primary" %>
<% end %>
这是用户已经注册到课程的表格:
<%= form_for course, :url => {:controller => "signups", :action => "show", params: {id: course.id}}, :method => "get" do |f| %>
<%= hidden_field_tag :course_id, course.id %>
<%= hidden_field_tag :user_id, current_user.id %>
<%= f.label :"Course Title" %>
<%= f.text_field :courseTitle, class: 'form-control' %>
<%= f.label :"Course Title" %>
<%= f.text_field :courseTitle, class: 'form-control' %>
<%= f.label :"Detailed Description Of Course Dates & Times" %>
<%= f.text_area :courseDatesAndTimes, class: 'form-control' %>
<%= f.label :"General Course Location eg 'Malaga'" %>
<%= f.text_field :courseGeneralLocation, class: 'form-control' %>
<%= f.label :"Exact Course Address including Postal Code" %>
<%= f.text_field :courseExactAddress, class: 'form-control' %>
<%= f.label :"Course Description" %>
<%= f.text_area :courseDescription, class: 'form-control' %>
<%= f.label :"Maximum Number of Students" %>
<%= f.text_field :courseMaximumNumberStudents, class: 'form-control' %>
<%= f.label :"Normal Course Price" %>
<%= f.text_field :courseNormalPrice, class: 'form-control' %>
<%= f.label :"'Listener' Course Price" %>
<%= f.text_field :courseListenerPrice, class: 'form-control' %>
<%= f.submit "You're Signed Up! View Details", class: "btn btn-primary" %>
<% end %>
这是不起作用的 - 我得到错误:
ActionController :: urlGenerationError in CoursesController#index没有路由匹配{:action =>" show",:controller =>" Inbips"}
show动作在Ingups_controller(在功能"创建"操作下方)中,如:
def show
@courseID = params[:course_id]
@userID = current_user.id
@signup = getSignup(@courseID,@userID)
redirect_to signups(@signup)
end
...和在路由文件中,我只有以下行:
resources :signups
我试图阅读有关路由的导轨指南,以及有关如何量身定制选项以正确调用其他控制器中的其他操作的指南,但我认为我在这里缺少一些基本知识't让它在注册控制器中调用表演动作,似乎是因为路由。RB问题。
有人可以告诉我怎么了?
谢谢!
尝试更换
<%= form_for course, :url => {:controller => "signups", :action => "show", params: {id: course.id}}, :method => "get" do |f| %>
<%= form_for course, url: signup_path(course) do |f| %>