5

我的控制器中有两个动作:

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动作结束时result以 js 格式呈现动作?

非常感谢 !

4

4 回答 4

6

在你的 find 方法中试试这个。

render 'result', :id => @item.id, :format => :js
于 2012-03-31T20:28:21.673 回答
1

render方法只呈现视图,不调用另一个动作

于 2012-03-31T20:28:19.817 回答
1

这里更大的问题是你试图调用另一个动作,这打破了 MVC 模式。即使动作被定义为方法,也可以将它们视为其他东西,不能调用其他动作。

此外,请回复您的视图中调用/触发这些操作的代码。

于 2012-03-31T23:50:24.440 回答
1
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>
于 2018-11-29T04:04:23.660 回答