0W5E8fPq1EOm4yE
@0W5E8fPq1EOm4yE (Nishio)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

いいね機能実装におけるActionView::SyntaxErrorInTemplateについて

解決したいこと

以下のサイトを参考にいいね機能を実装しているのですが、ActionView::SyntaxErrorInTemplateとエラーが出てしまい解決できない状況にあります。何か書き方が違うのでしょうか?ご教授の程お願いします。

発生している問題・エラー

ActionView::SyntaxErrorInTemplate in WaysController#show

スクリーンショット 2021-01-31 21.10.10.png
スクリーンショット 2021-01-31 21.10.15.png

該当するソースコード

<%= render "devise/shared/header" %>
 <div class="col">
      <div class="card shadow-sm">


           <% if @way.image.attached? %>
            <%= image_tag @way.image %>
           <% end %>
         <% if @way.video.attached? %>
         <video src="<%= rails_blob_path(@way.video) %>" type="video/mp4" controls></video>
         <% end %>


<div class="card-body">
          <div class="card-text">
          <%#= image_tag @way.user.image %><%= @way.user.nickname %>
          </div>
        <p>
           <p class="card-text">
             <%= @way.text %>
             </p>
       <div class="content-like">
             <ul class="content-like__icons">
             <li id="<%= way.id.to_s %>">
           <% if @way.liked_by(current_user).present? %>
          <%= link_to (way_like_path(@way.id, @way.liked_by(current_user)), method: :DELETE, remote: true, class: "liked") do %>
            <i class="btn btn-sm btn-outline-secondary">いいねを外す</i>
          <% end %>
        <% else %>
          <%= link_to (way_likes_path(@way), method: :POST, remote: true, class: "like") do %>
            <i class="btn btn-sm btn-outline-secondary">いいね</i>
          <% end %>
        <% end %>
      </li>
    </ul>
  </div>
</div>

    <div class="d-flex justify-content-between align-items-center">
                 <small class="text-muted"><%= l @way.created_at %></small>
     <% if user_signed_in? && current_user.id == @way.user.id %> 

     <div class="btn-group">
      <%= link_to '編集', edit_way_path, method: :get, class: "btn btn-sm btn-outline-secondary" %>
     <%= link_to '削除', way_path, method: :delete, class:'btn btn-sm btn-outline-secondary' %> 
     </div>
     <% end %>
    </div>
 </div>
  </div>

       <div class="card-body">
        <%= "コメント一覧" %>
       </div>
class WaysController < ApplicationController
  before_action :authenticate_user!, except: [:index, :show]
  before_action :set_way, only: [:show, :edit, :update, :destroy]

  def index
    @way = Way.includes(:user).order('created_at DESC')
  end

  def new
    @way = Way.new
  end

  def create
    @way = Way.create(way_params)
    if @way.save

      redirect_to ways_path
    else
      render :new
    end
  end

  def edit
    redirect_to action: :index unless @way.user.id == current_user.id
  end

  def show
  end

  def update
    if @way.update(way_params)
      redirect_to way_path
    else
      render :new
    end
  end

  def destroy
    if current_user.id == @way.user.id
      @way.destroy
      redirect_to ways_path
    else
      render :new
    end
  end

  private

  def way_params
    params.require(:way).permit(:name, :text, :image, :video).merge(user_id: current_user.id)
  end

  def set_way
    @way = Way.find(params[:id])
  end
end

自分で試したこと

・「、」の書き忘れがないか確認。

の数の確認

・<% if〜 %>から<% end %>が欠けていないかの確認

0

1Answer

28 行目の link_to (way_like_path( 略 で、 link_to( の間にスペースがあるのが原因です。関数呼び出しの関数名と開きカッコの前にスペースを置くと構文エラーになります。スペースを消してください。


※厳密にいうと引数が0〜1個のときはスペースを置けますが、分かりづらい挙動なのでこういう書き方はしないのがおすすめです。

func ()     # OK
func (1)    # OK
func (1, 2) # Syntax Error
1Like

Comments

  1. ありがとうございます!エラーが解消しました!

Your answer might help someone💌