尝试渲染显示页面时的奇怪行为 - Rails

时间:2016-07-03 22:58:41

标签: ruby-on-rails

目前我有一个应用程序可以完成所有基本的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

VIEW:

  <h1><%= @subscriber %></h1>

在构建之前,只是想确认我得到了正确的信息。

ERROR:

enter image description here

正如您所见,show动作正在呈现此对象。我正在尝试呈现订阅者first_name

HTML:

<% @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属性的路由。

我希望这是足够的信息让我知道你是否需要更多?

2 个答案:

答案 0 :(得分:1)

在循环中,您将整个订阅者对象传递给URL。

将您的link_to更新为:

link_to subscriber.first_name,subscriber_path(subscriber.id)

那应该可以解决你的问题。

另外,如果你还没有安装撬宝石,我建议你这样做。这将允许您在控制台中测试模型或控制器中设置的变量。

答案 1 :(得分:0)

如果我理解正确,您希望在h1标签中显示订户名称。如果您想要名字,那么您需要<h1><%= @subscriber.first_name %></h1>