Невозможно запустить это действие контроллера в представлении (это не RESTful-действие Rails по умолчанию) - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть контроллер с именем Vote_controller.rb . В этом файле есть следующее действие:

class VotesController < ApplicationController
  def vote_up
    @post = Post.find(params[:post_id])
    vote_attr = params[:vote].merge :user_id => current_user.id, :polarity => 1
    @vote = @post.votes.create(vote_attr)    
  end

(и т.д. ...)

Я хочу вызвать действие vote_up в представлении:

просмотров / сообщений / show.html.erb:

<%= link_to "Vote Up", ??? %>

Вот весь файл на всякий случай:

<h2>posts show</h2>

<span>Title: <%= @post.title %></span><br />
<span>Content: <%= @post.content %></span><br />
<span>User: <%= @post.user.username %></span><br />

<%= link_to "Vote Up", ??? %>

<h2>Comments</h2>

<% @post.comments.each do |comment| %>
  <p>
    <b>Comment:</b>
    <%= comment.content %>
  </p>
  <p>
    <b>Commenter</b>
    <%= link_to comment.user.username, comment.user %>
  </p>
<% end %>

<h2>Add a comment:</h2>
<%= form_for([@post, @post.comments.build]) do |f| %>
  <div class="field">
    <%= f.label :content %><br />
    <%= f.text_area :content %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

<% if current_user.id == @post.user_id %>
  <%= link_to 'Edit', edit_post_path(@post) %> |
<% end %>
<%= link_to 'Back', posts_path %>

Понятия не имею, что набирать в ??? часть (я также хотел бы, чтобы это работало как :remote. Я намерен запустить действие, не обновляя страницу).

Должен ли я что-то добавить в routes.rb?

Есть предложения?

1 Ответ

2 голосов
/ 04 февраля 2012

Вы должны определить маршрут в routes.rb. Используйте именованный маршрут, чтобы его было легко использовать в представлении. Что-то вроде:

get 'votes/:id/vote_up' => 'votes#vote_up', as: 'vote_up'

И так теперь можно использовать в представлении

<%= link_to "Vote Up", vote_up_path(@post) %>

и в контроллере

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

См. Рельсовая маршрутизация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...