簡體   English   中英

在索引頁面中渲染show動作-Rails

[英]Rendering a show action in the index page - rails

我目前有一個包含所有訂戶的索引表,然后有link_to,它呈現該訂戶的顯示頁面。 我真的很想在顯示頁面和訂閱者信息的索引頁面之前呈現一個模式。 老實說,我從來沒有真正做過一個模態,而且我真的在努力弄清楚這一點。 我要說的是我從W3開始這個模態的開始,很酷,只是您必須單擊顯示頁面中的按鈕來呈現模態,但是我希望它在呈現索引之前顯示它。 似乎我只希望有人為我編碼,但事實並非如此,我只是在尋找正確方向的幫助。 我真的很想念這個。 為了清晰起見,下面是一些代碼。

控制器:

    class SubscribersController < ApplicationController
  helper_method :sort_column, :sort_direction

  def index
    @search = Subscriber.search(params[:q])
    @subscriber = @search.result
    @search.build_condition if @search.conditions.empty?
    @search.build_sort if @search.sorts.empty?
  end

  def show
    @subscriber = Subscriber.find_by(params[:id])
  end

  def new
    @subscriber = Subscriber.new
  end

  def create
    @subscriber = Subscriber.new(subscriber_params)
    if @subscriber.save
      @subscriber.touch(:subscription_date)
      SubscriberMailer.welcome_subscriber(@subscriber).deliver_now
      flash[:notice] = "Subscriber Has Been Successfully Created"
      redirect_to new_subscriber_path(:subscriber)
    else
      render "new"
    end
  end

當前模態:

     <html>
<title>W3.CSS</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://www.w3schools.com/lib/w3.css">
<body class="w3-container">

<h2>subsriber</h2>

<button onclick="document.getElementById('id01').style.display='block'" class="w3-btn">Open Modal</button>

<div id="id01" class="w3-modal">
  <div class="w3-modal-content">
    <div class="w3-container">
      <span onclick="document.getElementById('id01').style.display='none'" class="w3-closebtn">&times;</span>
      <p><%= @subscriber.first_name %></p>
    </div>
  </div>
</div>

</body>
</html>

就像我說的那樣,我從W3網站復制了此內容。

我不確定還要顯示什么? 我想我可能正在不確定我想要的ajax東西? 任何幫助將是巨大的! 謝謝。

您必須創建一個show.js.erb並且必須調用模式。 在您的show link_to中傳遞一個遠程true,因為它將通過js調用模式。 您的link_to將如下所示:

link_to 'show' , subscriber_path(@subscriber) , remote: true

並且show.js.erb將是:

$("#your_global_modal_id").html("<%= j render partial: 'modal' %>");
$("#your_global_modal_id").show();

這樣就可以了。

好吧,您可以在頁面底部找到一個隱藏的模式,然后單擊一個訂戶,進行ajax調用,控制器獲取數據庫信息,運行帶有js.erb擴展名的文件,並用該訂戶的信息。

# assets/javascripts/application.js

function subFetch() {
  $('.sub').click(function() {
    $.ajax(
      url: "/subrsciber/" + id,
      type: "GET"
    )
  })
}
# contollers/subscribers_controller.rb

class SubscribersController
  def show
    @sub = Subscriber.find params[:id]
  end
end

這是在controller#action完成運行其代碼后運行的jQuery

# views/subscribers/show.js.erb

$('#modal .body').replacewith("<%= j( render 'subscribers/show') %>")
$(subFetch);

您還需要部分操作才能使render 'subscribers/show.js.erb'正常工作

# views/subscribers/_show.html.erb

<h3><%= @sub.name %></h3>
<p><%= @sub.info %></p>

那應該為您指明正確的方向

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM