0

このオプションを実装できないようです: 私のアプリでは、ユーザーは投稿を作成し、投稿にコメントすることもできます。wwwユーザーがフォーマットまたはフォーマットでURL を表示したい場合、 gemhttpを使用してどのように表示すればよいですか? rails_autolinkURLをクリックしてリンクに移動できるようにしたい。私はすでに宝石をインストールしており、投稿コントローラーに追加しました。別のユーザーがその宝石を提案してくれましたが、実装方法がわかりません。ユーザーは、投稿表示テンプレートからコメントを作成します。gem を または で使用する必要がありshow templateますposts_controllerか?

これは私の投稿show.html.erbです:

<div class="page-header">
  <h2>
    <%= @post.title %>
    <small>
      posted by <%= link_to @post.creator.username %> <%= time_ago_in_words(@post.created_at) + ' ago' %>
      | <%= link_to 'go to link', fix_url(@post.url) %>
      <% if logged_in? && (@post.creator == current_user) %> |
        <%= link_to 'edit', edit_post_path(@post) %> |
        <i class="icon-user icon"></i>
      <% end %>
    </small>
  </h2>
</div>

<h3><%= @post.description %></h3>
  <%= render 'shared_partials/errors', errors_obj: @comment %>

  <%= form_for [@post, @comment] do |f| %>
    <%= f.text_area :body, :class=> "span4", :placeholder=> "Comment goes here", :rows => "7" %>
    </br>
    <div class="button">
    <%= f.submit "Create a comment", class: 'btn btn-primary' %>
    </div>
  <% end %>

<div class="page-header">
  <h4>All Comments</h4>
</div>
<% @post.newest_comments.each do |comment| %>
  <div class="comments">
    <h5><%= comment.body %></h5>
      <li>
       <small class="muted">
        posted by <%= link_to comment.creator.username %> <%= time_ago_in_words(comment.created_at) + ' ago' %>
        <% if logged_in? && (comment.creator == current_user) %> |
          <%= link_to 'edit', edit_post_comment_path(@post, comment) %> |
          <i class="icon-user icon"></i>
        <% end %>
      </small>
      </li>
  </div>
<% end %>

そして私のposts_controller:

require 'rails_autolink'
class PostsController < ApplicationController
  before_action :set_post, only: [:show, :edit, :update, :vote]
  before_action :require_user, only: [:new, :create, :edit, :update, :vote]
  before_action :require_creator, only:[:edit, :update]

  def index
    @posts = Post.page(params[:page]).order('created_at DESC').per_page(15)
  end

  def show
    @comment = Comment.new
  end

  def new
    @post = Post.new
  end

  def create
    @post = Post.new(post_params)
    @post.creator = current_user

    if @post.save
      flash[:notice] = "You created a post!"
      redirect_to posts_path
    else
      render :new
    end
  end

  def edit
  end

  def update
    @post = Post.find(params[:id])
    if @post.update(post_params)
      flash[:notice] = "You updated the post!"
      redirect_to post_path(@post)
    else
      render :edit
    end
  end

  def vote
    Vote.create(voteable: @post, creator: current_user, vote: params[:vote])

    respond_to do |format|
      format.js { render :vote } # Renders views/posts/vote.js.erb
    end
  end

  private
  def post_params
    params.require(:post).permit(:url, :title, :description)
  end

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

  def require_creator
    access_denied if @post.creator != current_user
  end
end
4

1 に答える 1

0

rails_autolinkそれがあなたが達成しようとしていることができるかどうかは完全にはわかりません。基本的に、ドキュメンテーションに従って、 gem は、出力されたテキスト内の URL を、URL をテキストとして囲むハイパーリンクに補間します。デフォルトでは、マークアップはサニタイズされたhtml_safe文字列として出力されます。

auto_link("Go to http://www.rubyonrails.org and say hello")
# => "Go to <a href=\"http://www.rubyonrails.org\">http://www.rubyonrails.org</a> and say hello"

ビュー/テンプレートで直接使用する必要があり、コントローラーで要求する必要はありません。Rails は通常、アプリケーションの読み込み時に gem の依存関係を必要とするため、実行時にそれらを含める必要はありません。

于 2013-09-30T04:15:52.803 に答える