0

で処理し、Webアプリケーション、私は本当に、私はちょうど私ではイベント/リンク私はレールに新たなんだとレール

を達成するために、私が好きなものを説明しますこれを依頼する方法の専門用語を知りませんコントローラー私は、例えば世界中のユーザーからのすべてのメッセージを表示しています。私は、メッセージが世界中から来るのか、彼の国から来るのかをユーザーが判断できるようにしたいと思います。

私は、関連するメッセージを取得し、関連する変数でそれらを配置する方法を知っている:

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

私の問題は、この作業を行う方法のロジックと流れです。私は、Webページにリンク/ボタン/フラグのイメージがあるようにしたいので、ユーザーがそれをクリックするとコントローラは何かをします。

私はこれにはjavascriptが必要だと知っていますが、私はそれを作る方法を知らないので、javascriptはコントローラや他のアクションで特定のメソッドを呼び出すでしょう。

何か

javascript: onclick(flag) do something in controller 

のようなコントローラは、(グローバルまたはローカル)@msgsに適切な変数を配置し、ビューは常に私は私だけでドン基本的な何かが足りないのです実現@msgsに

をレンダリングしますGoogleでこれを検索する方法はわかりません。

おかげレールで

答えて

1

あなたはURLでアクセスできるようになりますし、あなたが行動範囲内づけしたURLパラメータを追加することができますGETアクションを作成することができます。

コントローラーがページとモデルメッセージと呼ばれているとします。アプリ/ビュー/ページ/ messages.html.erb

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 

つだけビュー:あなたは、2つの異なる方法で呼び出すことができますあなたのコントローラで1つのアクション(アプリ/コントローラ/ pages_controller.rb)だろうroutes.rbを設定/中

1ルート

get "/pages/messages" 

あなたのリンクはへ/ページ/メッセージおよび/ページ/メッセージを指すのでしょうか?only_country = 1つの

乾杯。

EDITED:

+0

感謝をpages_controller.rbするすべてを変え、私が試してみて、これは私のために動作しませんバック –

+0

報告します。ページコントローラに変数が必要なので、私はflash [:global] = true/falseを使用して値を適切なアクションに転送しました。そこにメッセージロジックがあります。しかし、<%= link_to "global"、 "/ messages/all"%>を使用してリンクを作成すると、テンプレート・エラーが見つかりません。何が欠けていますか? –

+0

app/controller/messages_controller.rbファイルとapp/views/messages/messages.html.erbファイルを作成しましたか? – thexebolud

関連する問題