ruby-on-rails - 将局部变量传递给在 View 加载后呈现的局部变量

标签 ruby-on-rails ruby-on-rails-3.2

更新:我刚刚找到了另一个线程,它解释了我为什么会遇到这个问题( Pass local rails variable to javascript to partial ),但它没有列出修复它的步骤(或者至少它跳过了太多我不知道该怎么做的步骤) .) 问题似乎是传递给局部变量的局部变量不再是加载 new.html.erb 时存在的局部变量,因为局部变量直到单击事件才被加载。有没有可能解决这个问题?谢谢。

原文:

我有一个与链接相关联的点击事件,该链接仅在某些时候有效,我不知道为什么。当单击链接而不重新加载页面时,它应该将部分渲染到我的 View 中。

这是我目前拥有的(不起作用):

comps_helper.rb:

def addRound(f)
  render "add_round", f: f
end

comps/new.html.erb
<div id="add_round"></div>
<%= link_to "Add round", addRoundLink_path, remote: true %>

addRoundLink.js.erb
$("#add_round").html("<%=j addRound(f) %>");

什么工作:
  • 如果我使用 <%= addRound %> 直接从 new.html.erb 调用 helper 方法,它就可以工作。但是我需要在单击链接时触发它,以便用户可以根据需要向表单添加任意数量的部分。
  • 如果上面的代码中没有包含 'f' 参数,则 javascript 会在点击时起作用。例如,如果我更改部分,使其仅包含一串文本,则单击链接时它将呈现该文本。这让我觉得我如何在 javascript 中包含 'f' 参数存在问题。但我不确定为什么会这样,因为 javascript 不只是将该代码插入到 new.html.erb 中,在那里我有带有“add_round”ID 的 div?

  • 注意:当我单击链接时,这是我在 javascript 控制台中看到的内容:
    GET http//0.0.0.0:3000/addRoundLink 500(内部服务器错误)
    jquery.js:8215

    谢谢。

    最佳答案

    它不起作用,因为 f仅存在于您的 Controller 操作的上下文中。

    当用户单击您的链接时,会为您的 javascript 发出一个新的 HTTP 请求。处理此请求的 Controller Action 与呈现页面的 Action 不同,因此您需要设置 f在此 Controller 操作中并将其作为本地传递给 addRoundLink.js.erb。

    示例代码

  • 我假设 f由您的模型对象/实例决定。

  • 在您的 Controller 中
       def add_round
            model = MyModel.find params[:id]
            f = model.determine_f
    
            render :partial => 'add_round', :locals => { :f => f }
       end
    

    在你的 new.html.erb
    <%= link_to "Add Round", add_round_path(@model), :remote => true %>
    

    关于ruby-on-rails - 将局部变量传递给在 View 加载后呈现的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12376653/

    相关文章:

    ruby-on-rails - 根据回形针中的样式调整 missing.png 的大小

    ruby-on-rails-3.2 - 在 Mountain Lion postgresql 上升级后不起作用

    ruby-on-rails-3.2 - Capistrano 删除 Assets

    ruby-on-rails - 如何正确检查 ruby​​ 中的嵌套值

    javascript - rubyonrails 中 ajax 发布后未定义的追加

    ruby-on-rails - Ruby on Rails - 在 html.erb 中使用助手

    ruby-on-rails - mongoid 不更新嵌入式集合的正确对象

    ruby - ruby on rails 中的 SQL Like 运算符

    ruby-on-rails-3 - 如何在heroku上找到当前的连接池大小

    ruby-on-rails - 类地址的父类(super class)不匹配 Braintree