【问题标题】:Rails : how to render an other action in the controller, in js not in html?Rails:如何在控制器中呈现其他动作,在 js 中而不是在 html 中?
【发布时间】:2012-03-31 20:14:03
【问题描述】:
我的控制器中有两个动作:
def find
@item = Item.find(params[:id])
render 'result', :id => @item.id
end
def result
@item = Item.find(params[:id])
respond_to do |format|
format.js
end
end
问题在于我首先调用find 操作,然后调用result 操作,但采用html 格式。所以'format.js'永远不会被触发。
如何在find动作结束时渲染js格式的result动作?
非常感谢!
【问题讨论】:
标签:
ruby-on-rails
json
render
respond-to
【解决方案1】:
在你的 find 方法中试试这个。
render 'result', :id => @item.id, :format => :js
【解决方案3】:
这里更大的问题是你试图调用另一个动作,这打破了 MVC 模式。即使操作被定义为方法,也可以将它们视为其他东西,不能调用其他操作。
另外,请回复您视图中调用/触发这些操作的代码。
【解决方案4】:
Try this
<%= render 'components/activity-slider', populer_packages: @populer_packages %>
components/activity-slider
<div class="slider sliderSecondary activitiesSlider">
<% populer_packages.each do |package| %>
<a href="#" class="sliderGrid ">
<div class="sliderCont">
<div class="sliderGradient"></div>
<div class="sliderThumb">
<div class="sliderImgWrap">
<%= image_tag "#{package.image}", class: "img-fluid sliderImg" %>
<div class="overlayCaptionCont">
<div class="overlayCaptionWrap">
<div class="overlayCaption">
<ul class="list-unstyled captionList">
<li>test</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</a>
<% end %>
</div>