Скажем, у меня есть модель Article, а в представлении "new" статьи у меня есть две кнопки, "Опубликовать" и "Сохранить черновик".
Мой вопрос: как узнать, какая кнопка нажата в контроллере?
У меня уже есть решение, но я думаю, что должен быть лучший способ.
То, что я сейчас использую в представлении:
<div class="actions">
<%= f.submit "Publish" %>
<%= f.submit "Save Draft", :name => "commit" %>
</div>
Так что в контроллере я могу использовать строку params [: commit] для обработки этого действия.
def create
@article = Article.new(params[:article])
if params[:commit] == "Publish"
@article.status = 'publish'
// detail omitted
end
@article.save
end
Но я думаю, что использование строки, связанной с представлением, не очень хорошо. Не могли бы вы сказать мне еще один способ сделать это?
ОБНОВЛЕНИЕ : Поскольку эти кнопки находятся в одной форме, они все переходят к действию «создать», и это нормально для меня. Я хочу обработать это в действии create, например присвоить модели Article столбец «status» и содержать «public» или «draft».