开发者

Rails calling a controller from another model's view

开发者 https://www.devze.com 2023-04-13 02:28 出处:网络
I have a post model and an upvote model. upvote.rb class Upvote < ActiveRecord::Base has_one :user belongs_to :post

I have a post model and an upvote model.

upvote.rb

class Upvote < ActiveRecord::Base
  has_one :user
  belongs_to :post
end
# == Schema Information
#
# Table name: upvotes
#
#  id         :integer         not null, primary key
#  user_id    :integer
#  post_id    :integer
#  comment    :text
#  created_at :datetime
#  updated_at :datetime
#

Now within posts/index I want to add an upvote for the current user and the post.

Some research pointed me to write a helper posts_helper.rb

module PostsHelper
  def upvote_post(post)
    @upvote = Upvote.new
    @upvote.user_id = current_user.id
    @upvote.post_id = post.id
    if @upvote.save
     flash.now[:notice] = 'Upvote was successfully created.'
    end
  end
end

Inside my view I want to call the helper only on clicking a link but can't seem to get link_to working properly.

<% @posts.each do |post| %>
  <tr>
    <td><%= link_to "upboats" upvote_post(post) %></td>
    <td><%= post.name %></td>
...

I get the error syntax error, unexpected tIDENTIFIER, expecting ')' and can't seem to find any good alternatives.

What am I missing here?


UPDATED

It was a开发者_StackOverflow社区 comma. facepalm

Plenty of other issues, but that was what led to the error.

<% @posts.each do |post| %>
  <tr>
    <td><%= link_to "upboats", upvote_post(post) %></td>
    <td><%= post.name %></td>
...


Closing open question.

It was a comma.


UPDATED

It was a comma. facepalm

Plenty of other issues, but that was what led to the error.

<% @posts.each do |post| %>
  <tr>
    <td><%= link_to "upboats", upvote_post(post) %></td>
    <td><%= post.name %></td>
...
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号