0

我的代码在本地服务器上运行,但在生产服务器上不起作用。我无法弄清楚我做错了什么。请帮助我。

这是我的部分错误:

 <%=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
4

2 回答 2

0

改变

form_for @shiftchange

为了这

form_for :shiftchange

我想它有效

于 2013-05-21T14:01:45.933 回答
0

如果表单包含在多个操作(页面)中,您需要将 @shiftchange 设置为某个值,否则 form_for 指令将失败(它将没有任何东西可以创建表单)。

更好的方法(也是 Rails 的默认方法)是为每个操作设置单独的视图,每个视图仅包含该操作所需的元素,并加载到您的application.html.erb布局中,<%= yield %>.因此您将拥有一个app/views/shiftchanges/new.html.erb包含表单的视图。你从来不需要在 Rails 中定义任何加载路径,它们都是从model, controller and action名称派生的——或者从你的routes.rb. 这是convention over configurationhttp://en.wikipedia.org/wiki/Convention_over_configuration范例的核心部分,它在 Rails 中运行得如此之深。

如果您确实需要在每个页面上创建一个新对象的表单(例如,通常用于 ShiftchangeSessions),您可以重写您的 form_for 以便它不依赖于存在的对象:

form_for(Shiftchange.new)

或者如果您需要强制它发布到 create 方法

form_for(Shiftchange.new, :url => { :action => "create" }) 

form_for您可以在 Ruby On Rails API 文档http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for-label-Resource-orientated+style中阅读有关资源驱动的更多信息。

于 2013-05-21T14:11:28.720 回答