Rails 3: Как выполнить action, когда render: action? - PullRequest
1 голос
/ 07 июня 2011

Rails 3 рекомендуют Отдых. Например, я делаю блог-систему.

### PostsController

# show detail
# tag have lock or unlock status
def show
 @post = Post.find(params[:id])
 @tags = @post.tags.select("posts_tags.tag_lock")
end

### CommentsController

# Posts#show has comment form.
# when you post comment, rails execute this action
def create
 @post = @post.find(params[:id])
 begin
  @post.comments.create!(params[:comment])
 resucue
   @tags = @post.tags.select("posts_tags.tag_lock")
   render 'posts/show'
 end
end

если rails может выполнить действие с рендером, восстановить код просто. Возможно, решение состоит в том, чтобы сделать новое действие. но спецификации не имеют новых действий ... Что лучше? как насчет тебя ??

Извините, мой английский плохой.

1 Ответ

0 голосов
/ 07 июня 2011

Я думаю, что у вас все в порядке, как вы (исправлено несколько опечаток):

### PostsController

# show detail
# tag have lock or unlock status
def show
 @post = Post.find(params[:id])
 @tags = @post.tags.select("posts_tags.tag_lock")
end

### CommentsController

# Posts#show has comment form.
# when you post comment, rails execute this action
def create
 @post = Post.find(params[:id])
 begin
  @post.comments.create!(params[:comment])
 rescue
   @tags = @post.tags.select("posts_tags.tag_lock")
   render 'posts/show'
 end
end
...