2010-04-06 5 views
1

После того, как в течение нескольких часов я столкнулся с гуглом и причинил боль мозгу, я, наконец, решил опубликовать этот вопрос. Вот код ...Rails Шаблон RJS отображает код вместо html-страницы

view1.html.erb 
-------------- 
<%=link_to_remote_redbox "Link", :url => {:action => :action1, :id => @some.id} 

some_controller.rb 
------------------ 
def action1 
    render :layout => false 
end 

def action2 
    do some processing 
end 


action1.html.erb 
-------------------- 
<form onsubmit="new Ajax.Request('/some_controller/action2', {asynchronous:true, evalScripts:true, onComplete:function(request){RedBox.close(); return false;}, parameters:Form.serialize(this)}); return false;}" method="post" action="/some_controller/action2"> 
<input type=text name='username'> 
<input type='submit' value='submit'> 
</form> 

action2.rjs 
----------- 
page.replace_html("some_div", (render(:partial => "some_partial"))) 

с этим кодом на месте, когда action2.rjs пинки в нем должен отобразить страницу HTML, а не я получаю это

Element.update("some_div", "<style type=\"text/css\">\n\n.............. 

Как было предложено на другие должности, которые я прочитал, они говорят, что это вызвано из-за «: update => some_div» в функции link_to_remote_redbox, но, очевидно, у моего кода этого нет.

Помощь всегда приветствуется. Many Thanks

ответ

0

Убедитесь, что в макет включены файлы javascript по умолчанию. Другими словами:

+0

Hi. Да, макет загружает все Javascripts по умолчанию –

+0

@graza, это должен быть комментарий, если вы просто предлагаете ему попробовать что-то. Если вы не видите ошибку в пазе кода, попробуйте сначала запросить более подробную информацию, а не сделать снимок в темноте. –

0

Попробуйте следующее: -

def action2 
    render :update do|page| 
    page.replace_html, 'some_div', :partial => 'some_partial' 
    end 
end 

ИЛИ

<form onsubmit="new Ajax.Request('', {asynchronous:true, evalScripts:true, onComplete:function(request){RedBox.close(); return false;}, parameters:Form.serialize(this)}); return false;}" method="post" action="/some_controller/action2"> 
0

метод Salil был бы работать, если вы хотите позвонить вернуть Ajax вызова из браузера .. но в случае вы можете вызвать более сложный javascript (который может быть беспорядочным в вашем контроллере), вы можете сделать это вместо этого:

def action2 
    ...some code 
    respond_to do |format| 
    format.js 
    end 
end 

Это явно скажет, что рельсы возвращают javascript, а не html. Это также полезно, если вы используете jQuery, а не RJS.

Cheers!

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