Я хотел бы увидеть пример, демонстрирующий применение пункта (7.2) выше, где упомянутое объявление будет первым в его пространстве имен.
blockquote>Просто:
namespace ns { // declares S into ns as per [basic.scope.pdecl] void f(struct S&); } extern ns::S s; //extern ::S s; // not declared
Здесь
struct S
сначала объявляется в подробном спецификаторе типа в условии объявления-параметра функции, определенной в области пространства имен, в формеclass-key identifier
, и поэтому [basic.scope.pdecl] /7.2 применяется иstruct S
объявляется в пространстве именns
, где объявлена функция.вам нужно будет использовать объект класса
blockquote> [ 111]S
в вашей функцииf
В качестве бонуса приведен пример, в котором класс не был впервые объявлен в подробном спецификаторе типа, и поэтому правило в кавычках неприменимо:
struct S; namespace ns { void f(struct S&); // refers to ::S } //extern ns::S s; // not declared extern ::S s;
Здесь разработанный-тип-спецификатор не является первым объявлением
struct S
, поэтому [basic.scope.pdecl] / 7 не применяется, и никакой класс не объявлен в пространстве имен.
Вы можете добавить URL-адрес к атрибуту в форме или поле формы, если вы не против разметки, которая может не пройти валидатор, а затем получить этот атрибут с помощью jQuery.
Похоже, что Rails 3.0 может пойти по этому пути с помощниками javascript, использующими пользовательские атрибуты данных HTML5: DHH @ Railsconf 09
Да, это возможно, на текущих версиях направляющих просто называют Ваш файл application.js.erb
; на более старых версиях Вы можете или самокрутка или захватывать что-то вроде этого.
Не делайте application.js.erb
, это не очень хорошая практика, даже если задействовано кеширование. Сделайте конечную точку автозаполнения (URL-адрес, с которого вы получаете данные) таким же, как URL-адрес действия вашей формы. В вашем application.js
просто добавьте к нему & ac = 1
и пусть ваши контроллеры его поймут.
Вам не нужно его жестко кодировать - просто создайте единственную JS-функцию, которая добавляет прослушиватель автозаполнения и принимает параметры для автозаполнения, и вызовите это JS-функция из вашего шаблона:
(код упрощен для ясности)
application.js:
function add_autocomplete(id, url) {
$("#" + id).autocomplete(
source: url
);
};
application_helper.rb:
def add_autocomplete(id, url)
render :text => "<script> add_autocomplete('#{id}', '#{url}');</script>"
end
Шаблон ERb:
<input id="i_want_autocomplete" />
<%= add_autocomplete("i_want_autocomplete", items_js_path() %>