加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 02:18:53 所属栏目:百科 来源:网络整理
导读:更新:我刚刚发现这个其他线程解释了为什么我遇到这个问题( Pass local rails variable to javascript to partial),但它没有列出修复它的步骤(或者至少它跳过了太多我不知道该怎么做的步骤.)问题似乎是传递给partial的局部变量不再是加载new.html.erb时存在
更新:我刚刚发现这个其他线程解释了为什么我遇到这个问题( Pass local rails variable to javascript to partial),但它没有列出修复它的步骤(或者至少它跳过了太多我不知道该怎么做的步骤.)问题似乎是传递给partial的局部变量不再是加载new.html.erb时存在的同一局部变量,因为在click事件之前没有加载partial.有可能解决这个问题吗?谢谢.

原版的:

我有一个点击事件绑定到一个链接只能在某些时间工作,我不知道为什么.在没有重新加载页面的情况下单击链接时,应该将部分渲染到我的视图中.

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

comps_helper.rb:

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

谱曲/ 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中,其中我的div有“add_round”id?

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

谢谢.

解决方法

它不起作用,因为f仅存在于您的控制器操作的上下文中.

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

示例代码

>我假设f由您的模型对象/实例确定.

在你的控制器中

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 %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读