【问题标题】:Ruby on Rails -> Create div dynamicallyRuby on Rails -> 动态创建 div
【发布时间】:2016-02-25 15:53:06
【问题描述】:

我在一个任务管理器应用程序上工作,我想创建 html div“卡片”(带有标题、持续时间等...),以及我在 rails 中的数据库中获得的所有数据。

我想我必须使用 javascript 函数,但我无法做到这一点。 我在 google 上看到了很多东西,但我找不到来自 rails 控制器的确切 javascript 调用(因为我只捕获控制器中的所有数据)。

这是我的控制器:

def new
  # Retrieve all tasks in the project
  @taskModel = Task.new()
  @projectTasks = @taskModel.getProjectTasks()
  # Add tasks on html
  (0..@projectTasks.length).each do |i|
    respond_to do |format|
      format.js { render :js => "window.createTask();" } # I need to pass parameters in the createTask function
    end
  end
end

还有我的 js 文件:

window.createTask = (title, content, duration) ->
  card = document.createElement('div');
  document.getElementsByClassName('content')[0].appendChild(card);

使用我的代码,我收到此错误:ActionController::UnknownFormat

【问题讨论】:

  • 你在使用角度吗?为什么你必须使用javascript函数。
  • 我只在rails上使用ruby,我只需要javascript来动态创建html元素。
  • 我准确地说我不能在html中加载我的js文件,因为我先用rails下载db数据,然后我需要用它创建html标签。

标签: javascript ruby-on-rails ruby


【解决方案1】:

ActionController::UnknownFormat 表示您的 ajax 请求被解释为格式错误的请求。要更好地回答这部分,您必须使用 ajax 调用发布 javascript。

其次,你必须重新考虑这个区块中的render

(0..@projectTasks.length).each do |i|
    respond_to do |format|
      format.js { render :js => "window.createTask();" } # I need to pass parameters in the createTask function
    end
  end

您多次致电respond_to 这是错误的。将此循环放入new.js.erb 视图中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-07
    • 2013-12-21
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2011-08-01
    相关资源
    最近更新 更多