2017-08-16 19 views
1

私はRoRを初めて使い、現在いくつかのテスト作業を達成中です。 私はupdate_dateからselect_tagを私のフォームから選んで、Showボタンを押してください。その後、その選択したupdated_dateに従って同じページ(index.htmlの 'update-container' div)対応する情報をdbから見たいと思っています。私はそれだけでなく、 'stackoverflowed'それをGoogleにしようとしていたが、私はちょうどもっとつまってしまったたびに&もっと。選択フィールドレールからオプションを選択した後にindex.htmlをdb値で更新します

マイindex.html.slim:

.container 
    .child-container 
     .show-date 
      = form_tag('/show', 
       method: :get, 
       remote: true, 
       enforce_utf8: false, 
       :'data-update-target' => 'update-container', 
       class: 'select_date') 
       do 
        = collection_select(:id, :id, Dashboard.all, :id, :update_date) 

       = submit_tag 'Show', name: nil 

     #update-container 

マイroutes.rbを:

Rails.application.routes.draw do 
    resources :dashboards, only: [:index, :show] 
    root to: 'dashboards#index' 
end 

マイdashboards_controller.rb:

class DashboardsController < ApplicationController 
    def index 
     @dashboards = Dashboard.all 
    end 
    def show 
     @dashboard = Dashboard.find(params[:id]) 
    end 
end 

i`veが得たその時点から」 ActionController :: RoutingError([GET] "/ show"と一致するルートはありません): "

私は非常に助けを感謝します。前もって感謝します。

+0

'' 'resources''メソッドは、この場合、' ''/dashboards''と ''/dashboards /:id'''ルートを単に拒否します。あなたは/ showルートを持っていません(もしレーキルートの出力を確認するなら、利用可能なルートを見ることができます)。 –

+0

@stockholm_syndrome フォームタグで 'show'を' dashboard_path'(引用符なし)に変更しようとします。 – cnnr

+0

@cnnr、ありがとうございます。しかし、このソリューションを使用しても、私はまだ "No route matches ..."を受け取ります。 –

答えて

0

あなたの場合、routes.rbに次のコードを使用する必要があります。

get '/show', to: 'dashboard#show' 

あなたがresources :dashboardsを使用している場合、これは/dashboardsまたは/dashboards/:idに自動的にショーのルートを行います。

+0

それは簡単な解決策であり、私の鼻の下にあった。ご協力いただきありがとうございます! –

0

本当に大事なのは、私が質問のタイトルで指摘したポイントでした。まあ、それは多くの情報源で書かれていましたが、私はつまずいた。

私のために働く解決策を提供したい(おそらく私のような人に役立つ)。

config/routes.rb

Rails.application.routes.draw do 
    resources :dashboards, only: [:index, :show] 
    get '/show', to: 'dashboards#show' 
    root to: 'dashboards#index' 
end 

app/controllers/dashboards_controller.rb

class DashboardsController < ApplicationController 
    def index 
     @dashboards = Dashboard.all 
    end 

    def show 
     @dashboard = Dashboard.find(params[:id]) 
     respond_to do |format| 
      format.js 
      format.html 
      format.xml 
     end 
    end 
end 

app/views/dashboards/index.html.slim

.container 
    .child-container 
     .show-date 
      = form_tag('/show', 
       method: :get, 
       remote: true, 
       enforce_utf8: false, 
       class: 'select_date') 
       do 
       = select_tag(:id, options_for_select(Dashboard.all.collect{|d| [d.update_date, d.id]}), {include_blank: true}) 
       = submit_tag('Show', name: nil) 

     table[id="update-container"] 

app/views/dashboards/_dashboard.html.slim

thead 
tr 
    th Carousel 
    th Newbie 
    th Other 
tbody 
    tr 
     td #{dashboard.carousel_info} 
     td #{dashboard.newbie} 
     td #{dashboard.others} 

app/views/dashboards/show.js.coffee

$('#update-container').empty() 
$('<%= j(render @dashboard) %>').appendTo("#update-container") 

私は本当に彼らの助けのためのすべてに感謝します!そして私はどんな質問にも答える準備ができています。

関連する問題