如何在javascript标记内为render partial创建实例变量

时间:2013-12-07 08:36:19

标签: javascript jquery ruby-on-rails ruby

我想在我的:javascript_tag中创建RoR实例变量,并且我想要渲染我的部分。

'#{@workss}=' + all_filter_record;
console.log('#{@workss}');
html_data = "#{j render :partial => 'other_portfolio', @workss} }";
$("#other_portfolio").html(html_data)

我尝试了很多东西,但它不起作用

2 个答案:

答案 0 :(得分:1)

因为你提到:javascript我假设你正在使用haml来渲染视图。

通常你会在控制器中设置@works,然后你的视图代码就是

:javascript
  html_data = "#{j render :partial => 'other_portfolio', @works} }";
  $("#other_portfolio").html(html_data)   

另请注意,如果您使用此视图回复rails json电话(例如link_to :remote => true),则应使用:plain标记。

如果您真的想在视图中设置变量,那肯定是可能的,但不在:javascript:plain标记内,但您可以使用它。

像这样:

- works = all_filter_record
:javascript
  html_data = "#{j render :partial => 'other_portfolio', works} }";
  $("#other_portfolio").html(html_data)   

注意虽然可以在视图中设置变量,但是在视图中需要很多代码被认为是不好的形式,并且设置实例变量更是如此(设置实例变量建议您将在更多视图中使用它/ partials,但是你怎么知道数据的设置位置??)。因此,如果您需要一个实例变量:在控制器中设置它。

答案 1 :(得分:0)

直接在视图中使用javascript代码部分不是最好的方法。最好尝试在自己的资产文件中分离javascript逻辑。看看:https://github.com/gazay/gon