I have a rails app. When I click on a button I want it to load some new data into @posts in my controller, and show that in a render on the page.
In my view I have three buttons:
<div class="span6 offset3" id="user_post_area_button">
<div id="type_group" class="btn-group" data-toggle="buttons-radio">
<button class="radio_button" id="radio_button_zero" data-value="0">0</button>
<button class="radio_button" id="radio_button_one" data-value="1">1</button>
<button class="radio_button" id="radio_button_two" data-value="2">2</button>
</div>
</div>
When I click one of them I want some portion of my page to change. This is the portion I want to change (I want it to render with the new @posts):
<div class="render_post">
<%= render 'pages/singlePost' %>
</div>
I use this .js.coffee code:
$ ->
$("button.radio_button").click (e) ->
e.preventDefault();
list_status = $(this).data("value")
if list_status == 0
$("#radio_button_zero").addClass('active')
$("#radio_button_one").removeClass('active')
$("#radio_button_two").removeClass('active')
$.post '/lelist/' + list_status
else if list_status == 1
$("#radio_button_zero").removeClass('active')
$("#radio_button_one").addClass('active')
$("#radio_button_two").removeClass('active')
$.post '/lelist/' + list_status
else if list_status == 2
$("#radio_button_zero").removeClass('active')
$("#radio_button_one").removeClass('active')
$("#radio_button_two").addClass('active')
$.post '/lelist/' + list_status
And here is my controller:
class PagesController < ApplicationController
def lelist
if current_user && params[:list_status] == 0
@posts = Post.where("created_at <= ? AND status = ?", Time.now, 0).order("created_at DESC").page(params[:page]).per_page(10)
elsif current_user && params[:list_status] == 1
@posts = Post.where("created_at <= ? AND status = ?", Time.now, 1).order("created_at DESC").page(params[:page]).per_page(10)
elsif current_user && params[:list_status] == 2
@posts = Post.where("created_at <= ? AND status = ?", Time.now, 2).order("created_at DESC").page(params[:page]).per_page(10)
elsif !current_user || current_user
@posts = Post.where("created_at <= ? AND status = ?", Time.now, 0).order("created_at DESC").page(params[:page]).per_page(10)
end
end
end
I just can't figure out how to make this work. Some suggestions?
What you need to use are AJAX calls
Since it is an extensive subject, I can not start explaining about it here
You can start by reading about it here
http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#an-introduction-to-ajax
Here is more detailed manual
Enjoy
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.