我的应用程序在生产和登台服务器上运行。
相同版本的代码同时运行,服务器在rails(3.1.3)版本,宝石,数据库架构方面是完全相同的......我不知道找不到任何区别。< / p>
但是,我有一个使用formtastic(2.0.0.rc5)呈现的表单,它在2台服务器上的呈现方式不同。在生产中,Formtastic似乎没有正确考虑到视图在管理模块中。
有问题的部分是app/views/admin/composers/_form.html.erb
,相关部分是:
<%= semantic_form_for @composer, :url => @composer.new_record? ? admin_composers_path : admin_composer_path(@composer) do |form| %>
<%= form.inputs do %>
<%= form.input :name %>
...等...
在我的临时服务器上,表单按预期呈现(请注意id
字段的name
和input
):
<form accept-charset="UTF-8" action="/admin/composers" class="formtastic admin_composer" id="new_admin_composer" method="post" novalidate="novalidate">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓" />
<input name="authenticity_token" type="hidden" value="rotbxUCJeZJuAY6eMRKaQKYdiPN0tlfQSKIeCj6VBUE=" />
</div>
<fieldset class="inputs">
<ol>
<li class="string input required stringish" id="admin_composer_name_input">
<label class=" label" for="admin_composer_name">Name<abbr title="required">*</abbr></label>
<input id="admin_composer_name" maxlength="255" name="admin_composer[name]" type="text" />
...等...
但是,在生产服务器上(请注意错误的id
和name
):
<form accept-charset="UTF-8" action="/admin/composers" class="formtastic composer" id="new_composer" method="post" novalidate="novalidate">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓" />
<input name="authenticity_token" type="hidden" value="qt++LTRdS+V28dvTRHA7h0vGhSKSoINP8cTjLRCk088=" />
</div>
<fieldset class="inputs"><ol>
<li class="string input required stringish" id="composer_name_input">
<label class=" label" for="composer_name">Name<abbr title="required">*</abbr></label>
<input id="composer_name" maxlength="255" name="composer[name]" type="text" />
...等...
我一直担心可能会在某处缓存某些内容,但据我所知,我已迫使所有内容在生产中重新部署。
思想?
答案 0 :(得分:0)
嗯,事实证明它可能是我认为的,但我仍然不太明白为什么它在一个环境中工作而不是另一个环境。
我在controllers/admin/composers_controller.rb
控制器中的新方法最初看起来像:
def new
@composer = Composer.new
end
(基本上)但是因为我要把所有东西都放在管理模块中,所以实际上需要的是:
def new
@composer = Admin::Composer.new
end
(我正在使用class Admin::Composer < Composer
的简单技巧,而不是试图让命名空间控制器引用非命名空间模型。)