我的代码正在使用本地服务器,但它不能在生产服务器上运行。我无法弄清楚我做错了什么。请帮助我。
这是我在偏见中遇到错误的地方:
<%=form_for @shiftchange, :url => { :controller=>"schedulers" ,:action => "shift_change" },:validate=>true , :method => :post do |f|%>
<%= f.label :from_date , "From Date " %>
<%= f.text_field :from_date ,:class =>'datepicker' %>
<% end %>
要加载部分,我正在这样做: -
<%= render "schedule_shift" %>
在控制器中我有这个:
@shiftchange = Shiftchange.new
答案 0 :(得分:0)
更改
form_for @shiftchange
这个
form_for :shiftchange
我猜它有效
答案 1 :(得分:0)
如果包含多个操作(页面)的表单,则需要将@shiftchange设置为某些内容,否则form_for指令将失败(它将无法创建任何表单)。
更好的方法(以及Rails默认设置)是为每个操作设置单独的视图,每个视图仅包含该操作所需的元素,并使用application.html.erb
加载到<%= yield %>.
布局中会有一个app/views/shiftchanges/new.html.erb
视图,其中包含表单。您永远不需要在Rails中定义任何加载路径,它们都来自model, controller and action
名称 - 或来自您的routes.rb
。这是convention over configuration
http://en.wikipedia.org/wiki/Convention_over_configuration范例的核心部分,它在Rails中运行得非常深。
如果您确实需要在每个页面上创建一个用于创建新对象的表单(例如,通常用于ShiftchangeSessions),则可以重写form_for,使其不依赖于存在的对象:
form_for(Shiftchange.new)
或者如果您需要强制它发布到create方法
form_for(Shiftchange.new, :url => { :action => "create" })
您可以在Ruby On Rails API文档http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for-label-Resource-oriented+style中阅读有关资源驱动的form_for
的更多信息。