我现在有一张充满信息的表格,理想情况下我需要通过链接查看数据库表中的信息。
我只有控制器和一些标准的html(html目前只是一个h1标签)
HTML将像模板一样标准化。
我在脑海中看到我想要的方式是用户将获得一个events_prev/{{id from DB here}}
的链接,并且根据ID,页面上的信息将从相应的DB Row中填充
继承我的控制器
class Events::EventsPrevController < ApplicationController
def index
@events = Event.where(id: id)
end
def show
render :nothing => true
end
end
抱歉,如果它超级混乱。
答案 0 :(得分:1)
欢迎使用rails。
好的,有几件事可以让你朝着正确的方向前进。首先,你真的需要做一些阅读,以了解控制器和路线以及视图如何在轨道中链接在一起,这将对你有所帮助。
但继续讨论你的具体问题:
通过url传递的所有数据(get,post,put,与方法无关)在控制器中可用,名为params
的数组对象 - 这意味着何时想要访问用户的数据提交后,您将使用类似
@event = Event.where(id: params[:id])
看起来您正在尝试使用索引页面。在rails中,索引是RESTful路由,通常指向模型对象的集合。 show route将指向一个单独的对象,因此您应该将链接指向show path而不是索引路径。
您可以使用以下命令在命令行上查看模型上可用的路径:
bundle exec rake routes
您的路线可能如下所示的示例:
prev_events GET /prev_events(.:format) prev_events#index
POST /prev_events(.:format) prev_events#create
new_prev_event GET /prev_events/new(.:format) prev_events#new
edit_prev_event GET /prev_events/:id/edit(.:format) prev_events#edit
prev_event GET /prev_events/:id(.:format) prev_events#show
PATCH /prev_events/:id(.:format) prev_events#update
PUT /prev_events/:id(.:format) prev_events#update
DELETE /prev_events/:id(.:format) prev_events#destroy
根据路由表,您现在应该看到用户需要点击的链接可能如下所示(假设event
是您的对象:
<%= link_to event.title, event_path(event.id) %>
或快捷方式
<%= link_to event.title, event %>
对于视图,这完全取决于事件模型中的数据。由于数据存储在@event
中,因此您可以简单地使用事件模型上的属性来呈现html,但是请使用,例如。
<h3><%= @event.title %></h3>
<span><%= @event.start_time %></span>
答案 1 :(得分:0)
您应该阅读Rails controllers:默认情况下,操作index
用于显示所有记录,您所谈论的内容应属于show
操作。默认routes负责传递给您的show动作的ID。
答案 2 :(得分:0)
索引操作是指显示视图中的项目列表,而显示操作用于显示单个项目。
您在index
中所做的事实上是show
行动的意思。
原因:
@events = Event.where(id: id)
这一行在每种情况下都会给你一个记录,这意味着它应该在Show action中。
您的代码应如下所示:
def show
@event = Event.find(params[:id])
[your logic: what you want to do with that @event]
end