目前我有一个应用程序可以完成所有基本的CRUD操作。最新的问题是我正在尝试添加一个链接,我subscribers
表中的所有人都将为每个订阅者呈现显示页面。一切似乎都很直接但是当我尝试渲染显示页面时,我得到了对象id,而不是我想要看到的人的实例。我不确定我做错了什么,但为了清晰起见,我会发布代码和屏幕截图。
class SubscribersController < ApplicationController
helper_method :sort_column, :sort_direction
def index
@search = Subscriber.search(params[:q])
@subscriber = @search.result
@search.build_condition if @search.conditions.empty?
@search.build_sort if @search.sorts.empty?
end
def show
@subscriber = Subscriber.find_by(id: params[:id])
end
def new
@subscriber = Subscriber.new
end
def create
@subscriber = Subscriber.new(subscriber_params)
if @subscriber.save
@subscriber.touch(:subscription_date)
SubscriberMailer.welcome_subscriber(@subscriber).deliver_now
flash[:notice] = "Subscriber Has Been Successfully Created"
redirect_to new_subscriber_path(:subscriber)
else
render "new"
end
end
<h1><%= @subscriber %></h1>
在构建之前,只是想确认我得到了正确的信息。
正如您所见,show动作正在呈现此对象。我正在尝试呈现订阅者first_name
<% @subscriber.each do |subscriber| %>
<tr>
<td><%= link_to subscriber.first_name, subscriber_path(subscriber) %></td>
<td><%= subscriber.last_name %></td>
<td><%= subscriber.email %></td>
<td><%= subscriber.phone_number %></td>
<td><%= subscriber.date_joined %></td>
<td><%= subscriber.expiration_date %></td>
<td><%= subscriber.visit %></td>
<td><%= subscriber.days_till_expired %></td>
<td><%= subscriber.mug_number %></td>
</tr>
<% end %>
正如您所看到的,我有一个link_to和我正在尝试传递first_name属性的路由。
我希望这是足够的信息让我知道你是否需要更多?
答案 0 :(得分:1)
在循环中,您将整个订阅者对象传递给URL。
将您的link_to更新为:
link_to subscriber.first_name,subscriber_path(subscriber.id)
那应该可以解决你的问题。
另外,如果你还没有安装撬宝石,我建议你这样做。这将允许您在控制台中测试模型或控制器中设置的变量。
答案 1 :(得分:0)
如果我理解正确,您希望在h1标签中显示订户名称。如果您想要名字,那么您需要<h1><%= @subscriber.first_name %></h1>