[英]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">×</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.