ページをロードするときに含めるコードは次のとおりです。
<script type="text/javascript">
function test() {
$.get('/login', function(data){
alert("test");
$('#flash_content').html("hi");
}, 'script');}
function test2(){
var jqxhr = $.get("/login", function(data) {
$('#flash_content').html(data);}, 'script')
.success(function() { alert("second success"); })
.error(function(request, status,error) { alert(error); })
.complete(function() { alert("complete"); });}
$(document).ready(function() {
$("#login").click(function(event){
event.preventDefault(); // Prevent link from following its href
test2();
});});
</script>
test2()を呼び出すと、Railsサーバーログで必要なビューがレンダリングされることがわかります。firebugでは、ajax getからの応答が実際にページに上書きしたいフォームであることがわかりますが、ページは実際に変更されます。「Data」を文字列「hi」に置き換えましたが、実際にページに配置されます。ご覧のとおり、アラートがポップアップ表示され、次のように通知されます。
SyntaxError: missing ; before statement
サインインするためのコントローラーの方法は次のとおりです。
@user = User.new
respond_to do |format|
format.html { }
format.js {render :layout => false }
format.xml { head :ok }
end
およびレンダリングする必要のあるビュー:
<%= form_tag user_sessions_path, :method => :post do %>
<div class="field">
<%= label_tag :username %><br />
<%= text_field_tag :username %>
</div>
<div class="field">
<%= label_tag :password %><br />
<%= password_field_tag :password %></br>
Remember me : <%= check_box_tag :remember %>
</div>
<div class="actions">
<%= submit_tag "Login" %>
</div>
<% end %>
私は何時間もこれに取り組んできたので、おそらく私は何か明白なものを見ていません:(ありがとう。