【问题标题】:Ruby on Rails. Load dynamic partial layouts with share dataRuby on Rails。使用共享数据加载动态部分布局
【发布时间】: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


    【解决方案1】:

    您的问题有些混乱,例如在您的// add_partial_answer.js.erb 中,您使用了未定义的变量 question_key,您的控制器不是 RESTful 等。因此,我不是逐步检查您的代码删除here link for a great railscast,您将在其中找到答案。希望对您的问题有所帮助。

    【讨论】:

    • 嗨,是的,我的代码不完整。非常感谢您提供的精彩链接,我在这里找到了答案:railscasts.com/episodes/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多