2012-01-15 1 views
2

Следующая link_to_function работ:link_to_function и JQuery не работает вместе в рельсах 3.1.0

<%= link_to_function "click", "alert(Hallo world!" %> 

Однако, с JQuery, следующий не работает:

<%= link_to_function "click", "$('#std').append('<p>my friend!</p>')" %> 

В application.html. erb, есть:

<head> 
    <title><%= title %></title> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    <%= stylesheet_link_tag "application" %> 
    <%= javascript_include_tag "application" %> 
    <%= csrf_meta_tags %> 
</head> 

jquery кажется функционирует хорошо. Любые мысли о проблеме? Благодарю.

Также здесь определение апите в рельсах 3.1.3 для link_to_function:

link_to_function(name, function, html_options={}) 

Returns a link whose onclick handler triggers the passed JavaScript. 

The helper receives a name, JavaScript code, and an optional hash of HTML options. The name is used as the link text and the JavaScript code goes into the onclick attribute. If html_options has an :onclick, that one is put before function. Once all the JavaScript is set, the helper appends “; return false;”. 

The href attribute of the tag is set to “#” unless html_options has one. 

link_to_function "Greeting", "alert('Hello world!')", :class => "nav_link" 
# => <a class="nav_link" href="#" onclick="alert('Hello world!'); return false;">Greeting</a> 

UPDATE: вот HTML код кисло:

<a href="#" onclick="$('#std').append('&lt;p&gt;my friend!&lt;/p&gt;'); return false;">test</a> 
+0

Осмотрите вывод HTML/JS вашего приложения Rails. Отправьте его здесь. – meagar

+0

только что обновлен исходным кодом html. – user938363

+0

скомпилировать ваши активы? –

ответ

7

Это навязчивый способ написания JavaScript. Я хотел бы написать что-то вроде этого:

<%= link_to "click", "#", :id=>"click" %> 

Update

Вы должны добавить документ готов иметь правильное связывание.

Тогда в вашем application.js

$(function() { 
    $("#click").click(function(e){ 
    $('#std').append('<p>my friend!</p>'); 
    e.preventDefault(); 
    }); 
}); 
+0

все еще не реакция после нажатия «добавить std». Вот источник html: Click. Используется: id => "click_std" – user938363

+0

Попробуйте обновленный код. Убедитесь, что загружен ваш 'application.js'. – dombesz

+0

Скопировал код и не реагировал. похоже нет причина. Как проверить, загружена ли application.js? – user938363

1

вы используете прототип тоже? если нет, то следующий код должен работать. Добавьте это на ваш взгляд.

<%= link_to "click", "javascript:", :onclick => "call_function();" %> 

в вашем файле сценария добавить следующий код.

function call_function() { 
    $('#std').append('<p>my friend!</p>'); 
} 
+0

Я использую jquery. – user938363

+0

Отсутствие реакции на щелчок. Та же проблема. – user938363

Смежные вопросы