如何让一个变量从一个控制器到一个js文件,再到一个渲染的分部
How to have a variable persist from a controller, to a js file, to a rendered partial
我正在使用ajax和jQuery呈现部分viewer
。我想根据点击的链接在分部中设置一个变量。
ERB:
<%=link_to "link1", viewer_path(id: Painting.first), remote: true%>
<%=link_to "link2", viewer_path(id: Painting.last), remote: true%>
控制器:
def viewer
@painting = Painting.find_by(:id)
respond_to do |format|
format.html { redirect_to root_path }
format.js
end
end
viewer.js.erb
$("#viewer").html("<%= escape_javascript(render 'viewer') %>");
_viewer.html.erb
<%= @painting.name %>
但是在渲染分部时没有设置变量@painting
,所以我得到了一个错误。
在控制器中定义变量不应该将值进位到分部吗?我做错了什么?
这可能是您的问题:使用Model.find_by
时,您需要指定查找依据。请尝试使用Model.find
,它始终使用模型的:id
、Model.find_by_id
或Model.find_by(id: :id)
。
在控制器#viewer:中进行此更新
@painting = Painting.find(:id)
不过,您是对的,实例变量(@painting
)在部分中是可用的。
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何从AngularJs中的另一个控制器访问控制器
- 单击angularjs中的另一个控制器时重新加载控制器
- Angularjs - 观察模态窗口从另一个控制器关闭
- 在一个控制器中更新服务变量,并在另一个控制器 - Angular JS中使用更新的值
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 将数据从控制器传递到另一个控制器
- 如何从另一个控制器更新控制器的ng重复模型
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- 从另一个控制器调用一个控制器
- 无法更改呼叫另一个控制器
- 如何让一个变量从一个控制器到一个js文件,再到一个渲染的分部
- angularjs调用另一个控制器's函数
- 访问一个控制器的ng隐藏值以在全局控制器中操纵另一个控制器中的ng样式
- 2个不同的控制器:在其中一个控制器的动作上隐藏元素
- 无法使用typescript访问angular中另一个控制器中声明的$rootscope属性
- AngularJS使用MVC动态获取html,附加到主体,并绑定一个控制器
- 角度-将数组中的信息从一个控制器传递到另一个控制器
- AngularJS:一个控制器中更新不同控制器中的值的事件