在Rails

时间:2016-04-01 09:10:53

标签: jquery ruby-on-rails ajax

我在使用remote :: true

更新视图时遇到问题

查看"做"显示部分:问题+这个问题的答案 按钮' Next'点击,但没有任何反应。 我无法想象为什么行动' list_update'不工作(在这个动作中我改变变量值以显示下一个问题+答案)。

do_controller:



class DoController < ApplicationController
    
    
    def show
        @cur_test = Test.where(id: params[:test_id])
        @cur_q_all = Question.where(test_id: @cur_test)
        @i = 0
        @cur_q = @cur_q_all[@i] 
            
        @cur_ans_all = Answer.where(question_id: @cur_q)
        
    end
    
    def list_update
         @i = 1
          respond_to do |format|
                format.html {}
                format.js {}

            end
    end
end
&#13;
&#13;
&#13;

show.html.erb for do_controller:

&#13;
&#13;
        <% @cur_test.each do |test| %>
            <div>
                <%= test.test_name %>
            </div>
        <% end %>
            
        
        <div id="answers_all"><%= render('answers_all')%></div>


<%= link_to 'Next', user_test_do_path, method: :get, action: :list_update, remote: :true %>
&#13;
&#13;
&#13;

partial _answers_all.erb:

&#13;
&#13;
          
            <div>
                <%= @cur_q.q %>
            </div>
            
            <% @cur_ans_all.each do |f| %>
                <div>
                   <%= f.answer %>
                </div>
            <% end %>
            
&#13;
&#13;
&#13;

list_update.js.erb:

&#13;
&#13;
$("#answers_all").html("<%= escape_javascript(render("answers_all")) %>");
&#13;
&#13;
&#13;

路线:

&#13;
&#13;
resources :users do
  resources :tests do
    get '/do' => 'do#show'
  end
end
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

试试这个 -

<%= link_to 'Next', user_test_do_path(user_id: 1, test_id: 2), method: :get, remote: :true %>`

根据您的路线,它会点击do controller's show行动。

如果您想使用do controller's list_update操作,那么您可以明确提及您要使用的controlleraction

<%= link_to 'Next', {controller: :do, action: :list_update, user_id: 1, test_id: 2}, method: :get, remote: :true %> 

添加到 routes.rb

get 'do/list_update'

注意:在上述两种情况下,我都会传递user_idtest_id,可以通过params[:user_id]params[:test_id]

在控制器中访问

希望它有所帮助!