我是RoR的新手,目前正在完成一些测试任务。
我需要的是从我的表单的update_date
中选择select_tag
,点击“显示”按钮,之后我想在同一页面上看到(“update-container”div中的index.html)相应的信息来自根据所选updated_date
的数据库。我试图谷歌它以及'stackoverflowed'它,但每次我刚刚卡住更多&更多。
我的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
从那时起,我得到了“ActionController :: RoutingError(没有路由匹配[GET]”/ show“):”。
我将非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
在您的情况下,您必须在routes.rb
中使用以下代码。
get '/show', to: 'dashboard#show'
如果您使用resources :dashboards
,则会自动将展示路线设为/dashboards
或/dashboards/:id
。
答案 1 :(得分: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")
我非常感谢所有人的帮助!我准备回答任何问题。