Rails 3.1.3 с использованием атрибута привязки с тегом link_to из записей / индекса в сообщениях / шоу / id не работает - PullRequest
7 голосов
/ 12 февраля 2012

Я использую тег link_to в моем представлении сообщений / индексов и хочу связать его с моим представлением сообщений / шоу / идентификаторов с помощью привязки, которая заставляет его прокручиваться вниз до формы комментариев.По какой-то причине я не могу заставить работать якорь.Вот мой код:

В posts / index

<%= link_to 'Add a Comment', post, :anchor => 'comment_form' %>

Не удается добавить знак # в конец ссылки, поэтому это просто localhost:3000 / сообщений / идентификатор.Я также попробовал много вариантов для link_to, включая:

<%= link_to 'Add a Comment', post(:anchor => 'comment_form' %>

и

<%= link_to 'Add a Comment', :controller => 'posts', :action => 'show', :id => @post, :anchor => 'comment_form' %>

, но мне не повезло.

Вот мои посты # show action:

  def show
    @post = Post.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @post }
    end
  end

, а вот пост / шоу, где я хочу, чтобы якорь прокрутил до:

<h2><a name="comment_form" id="comment_form">Add a comment:</a></h2>

Более тогоЛюбое из вышеперечисленного работает, если я ссылаюсь на что-то на странице индекса, поскольку я вижу, что хеш # был добавлен к выведенному URL.По какой-то причине это не работает при попытке ссылки на страницу шоу.Любая помощь с этим?

1 Ответ

14 голосов
/ 13 февраля 2012

Попробуйте это:

link_to('Add a comment', post_path(post, :anchor => 'comment_form'))

Второй аргумент link_to обычно передается url_for как есть, а третий аргумент используется в качестве хэша атрибутов для элемента <a>, который в конечном итоге генерируется.

Итак, в первом примере вы передаете объект Post в качестве второго аргумента и хэш в качестве третьего аргумента. Только Post будет передано url_for. Он никогда не увидит хеш, содержащий параметр :anchor, поэтому вы не увидите якорь в конце сгенерированного URL. (Но вы, вероятно, увидите атрибут anchor="comment_form" в сгенерированном элементе <a>.)

Ваш второй пример синтаксически неверен. Я предполагаю, что это привело к ошибке.

Твой третий пример ... должен был сработать. Я не уверен, почему это не так: -)

...