【发布时间】:2017-11-23 14:24:58
【问题描述】:
我是 Ruby 和 Ruby on Rails 的新手 我正在尝试使用共享数据动态加载模板 我有一个测验(在我的代码中命名为游戏),我将在游戏中添加一些问题并动态添加这些问题的一些答案。
在我的 games/index.html.erb 我有
<div class="form-group game">
<%= form.label(':name', "Quizz title") %>
<%= form.text_field ':name', class: 'form-control form-control-sm' %>
</div>
<div class="questions"></div>
<div class="row form-actions">
<div class="col-sm">
<%= link_to 'Add a question', add_partial_question_games_path, remote: true, "data-turbolinks": false, class: "btn btn-secondary" %>
</div>
<div class="col-sm text-right">
<%= form.submit 'Save', :class => "btn btn-primary" %>
</div>
</div>
当我单击“添加问题”链接时,我会附加问题的部分布局,其中包含用于附加答案部分布局的链接。所以我有这个订单的数据:
测验
-
问题 1
- 答案 1.1
- 答案 1.2
- 添加答案链接
-
问题 2
- 答案 2.1
- 答案 2.2
- 答案 2.3
- 答案 2.4
- 添加答案链接
添加问题链接
保存测验
我的控制器远程操作是:
def add_partial_question
respond_to do |format|
format.js
end
end
def add_partial_answer
respond_to do |format|
format.js
end
end
对应的*.js.erb文件为:
// add_partial_question.js.erb
$(document).ready(function() {
$('.questions').append("<%= escape_javascript(render :partial => 'games/partials/question') %>");
});
// add_partial_answer.js.erb
$(document).ready(function() {
$('.answers').append("<%= escape_javascript(render :partial => 'games/partials/answer', :locals => { :question_key => question_key }) %>");
});
我的“partials/_question.html.erb”包含
<div class="row">
<div class="col-sm">
<%= link_to 'Add an answer', add_partial_answer_games_path, remote: true, "data-turbolinks": false, class: "btn btn-secondary" %>
</div>
</div>
和部分/_answer.html.erb:
<div class="row">
<div class="col">
<%= text_field_tag "game[questions][#{question_key}][answers][#{answer_key}][text]", 'Your answer', class: "form-control" %>
</div>
</div>
我不知道如何初始化、传递和增加从控制器远程操作到这些部分视图的 question_key 和 answer_key。哪个是最好的方法? 当我尝试将远程操作中的任何变量传递给 *.js.erb 然后将它们传递给视图时,它不起作用。 我试图做这样的事情:
respond_to do |format|
format.js { render :locals => { :question_key => params[:question_key].to_i + 1 } }
end
它不起作用。
有什么想法吗? 非常感谢你
【问题讨论】:
标签: javascript jquery ruby-on-rails ruby