Rails 3.1, почему simple_form's wrapper_tag не работает должным образом? - PullRequest
0 голосов
/ 02 марта 2012

Когда я использую wrapper_tag в simple_form, он прекрасно работает в режиме разработки, но при развертывании приложения на heroku результат отрисовки будет другим.

Я использую wrapper_tag так:

<%- SimpleForm.wrapper_tag = :p -%>

обратите внимание на результат в производстве: (: вместо: p используется div)

<form accept-charset="UTF-8" action="/courses/1" class="simple_form edit_course" id="edit_course_1" method="post">
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="+qH0C/hOaatVnw+Jp2vysanyG5tSB6E6gayIGlJCYbo=" /></div>

<div class="input string optional"><label class="string optional" for="course_course_id"> Course ID</label><input class="string optional" id="course_course_id" maxlength="255" name="course[course_id]" size="50" type="text" value="" /></div>

<div class="input string required"><label class="string required" for="course_name"><abbr title="required">*</abbr> Title</label><input class="string required" id="course_name" maxlength="255" name="course[name]" required="required" size="50" type="text" value="This is my first course here at clouds!!" /></div>

<div class="input text required"><label class="text required block" for="course_description"><abbr title="required">*</abbr> Description</label><textarea class="text required" cols="42" id="course_description" maxlength="1000" name="course[description]" required="required" rows="3">Just to test, to see if precompiled assets for checkeditor is working .. </textarea></div>

<div class="input integer optional field_with_hint"><label class="integer optional" for="course_credits"> Credits</label><input class="numeric integer optional three_digits" id="course_credits" name="course[credits]" step="1" type="number" /><span class="hint">Fill zero to disable course credit</span></div>

<div class="input boolean optional"><input name="course[list_in_catalog]" type="hidden" value="0" /><input checked="checked" class="boolean optional" id="course_list_in_catalog" name="course[list_in_catalog]" type="checkbox" value="1" /><label class="boolean optional" for="course_list_in_catalog"> List in catalog</label></div>

<div class="input string optional"><label class="string optional" for="course_validation_code"> Validation code</label><input class="string optional" id="course_validation_code" maxlength="255" name="course[validation_code]" size="50" type="text" value="" /></div>

<div class="input boolean optional"><input name="course[sequential_chapter_access]" type="hidden" value="0" /><input checked="checked" class="boolean optional" id="course_sequential_chapter_access" name="course[sequential_chapter_access]" type="checkbox" value="1" /><label class="boolean optional" for="course_sequential_chapter_access"> Sequential chapter access</label></div>

</form>

в режиме разработки работает нормально: (используется тег p)

<form accept-charset="UTF-8" action="/courses/13" class="simple_form course" id="edit_course_13" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="eOi8hkGQ8eoZYwzIQBcBEB66ekI9kTTYztsyU+UKzmQ=" /></div>

<p class="input string optional"><label class="string optional" for="course_course_id"> Course ID</label><input class="string optional" id="course_course_id" maxlength="255" name="course[course_id]" size="50" type="text" value="" /></p>

<p class="input string required"><label class="string required" for="course_name"><abbr title="required">*</abbr> Title</label><input class="string required" id="course_name" maxlength="255" name="course[name]" required="required" size="50" type="text" value="كيف تكسب الآخرة؟" /></p>

<p class="input text required"><label class="text required  block" for="course_description"><abbr title="required">*</abbr> Description</label><textarea class="text required" cols="42" id="course_description" maxlength="1000" name="course[description]" required="required" rows="3">This is so cool course</textarea></p>

<p class="input numeric integer optional"><label class="integer optional" for="course_credits"> Credits</label><input class="numeric integer optional three_digits" id="course_credits" name="course[credits]" step="1" type="number" value="3" /><span class="hint">Fill zero to disable course credit</span></p>

<p class="input boolean optional"><input name="course[list_in_catalog]" type="hidden" value="0" /><input checked="checked" class="boolean optional" id="course_list_in_catalog" name="course[list_in_catalog]" type="checkbox" value="1" /><label class="boolean optional" for="course_list_in_catalog"> List in catalog</label></p>

<p class="input string optional"><label class="string optional" for="course_validation_code"> Validation code</label><input class="string optional" id="course_validation_code" maxlength="255" name="course[validation_code]" size="50" type="text" value="" /></p>

<p class="input boolean optional"><input name="course[sequential_chapter_access]" type="hidden" value="0" /><input class="boolean optional" id="course_sequential_chapter_access" name="course[sequential_chapter_access]" type="checkbox" value="1" /><label class="boolean optional" for="course_sequential_chapter_access"> Sequential chapter access</label></p>

</form>

Есть что-то, чего мне здесь не хватает? Что мне проверить?

1 Ответ

1 голос
/ 02 марта 2012

Вероятно, это как-то связано с кэшированием классов в разработке и производстве.

Если вы хотите изменить wrapper_tag глобально, вы должны сделать это в инициализаторе simple_form.Если вы хотите изменить его на основе полей, вы можете передать опцию wrapper_tag вызову input.

...