Событие / ссылка Обработка в рельсах - PullRequest
0 голосов
/ 19 ноября 2011

Поскольку я новичок в рельсах и веб-приложениях, я действительно не знаю, как задать этот вопрос, поэтому я просто опишу, чего бы я хотел достичь

В моем контроллере у меня, например, отображаются все сообщения от пользователей со всего мира. Я бы хотел, чтобы пользователь мог решать, будут ли сообщения поступать со всего мира или из его страны.

Я знаю, как получить соответствующие сообщения и поместить их в соответствующие переменные:

@msg_glbl = msgs.all
@msg_lcl = msgs.find_all_by_local(true)

Моя проблема в логике и последовательности того, как заставить это работать. Мне бы хотелось, чтобы на веб-странице была ссылка / кнопка / изображение флага, поэтому, когда пользователь нажимает на нее, контроллер что-то делает.

Я знаю, что для этого мне нужен javascript, но я не знаю, как это сделать, чтобы javascript вызывал определенный метод в контроллере или какое-то другое действие.

что-то вроде

javascript: onclick(flag) do something in controller

контроллер поместит в @msgs соответствующую переменную (глобальную или локальную), и представления всегда будут отображаться @ msgs

Я понимаю, что мне не хватает чего-то простого, я просто не знаю, как найти это в Google.

спасибо

1 Ответ

1 голос
/ 19 ноября 2011

В rails вы можете создавать действия GET, которые будут доступны по URL, и вы можете добавлять параметры URL, доступные в области действия.

Допустим, ваш контроллер называется страницей, а модель вашего сообщения. Тогда у вас будет 1 действие в вашем контроллере (app / controller / pages_controller.rb), которое можно вызвать двумя различными способами:

class PagesController < ApplicationController  
  # GET /pages/messages
  # GET /pages/messages?only_country=1
  def messages
    if(params[:only_country].nil? || params[:only_country].to_s != '1')
        @msgs = Message.all
    else
        @msgs = Message.find_all_by_local(true)
    end

    respond_to do |format|
      format.html # messages.html.erb
      format.json { render json: @msgs }
    end
  end

Только один просмотр в app / views / pages / messages.html.erb

1 маршруты в config / rout.rb

get "/pages/messages"

Ваши ссылки будут указывать на / pages / messages и / pages / messages? Only_country = 1

Приветствие.

РЕДАКТИРОВАНИЕ: все изменилось на pages_controller.rb

...