gpt4 book ai didi

ruby-on-rails - 在 Ruby on Rails 中创建草稿状态

转载 作者:行者123 更新时间:2023-12-04 05:56:28 27 4
gpt4 key购买 nike

(必须承认我是编码新手)

我已经使用 Rails 创建了一个简单的博客应用程序,并且还为我的表单使用了 simple_for gem。我正在尝试使用两个提交按钮创建草稿状态。最终目标是让“发布”按钮让所有登录或未登录的用户在索引页面上看到帖子,而“另存为草稿”按钮只让登录的用户看到帖子。这是我到目前为止所拥有的。

_form.html.erb:

<div class="actions">
<p><%= f.submit "Publish", :name => "publish" %>
<%= f.submit "Save as Draft", :name => "draft" %></p> </div>

posts_controller.rb:(不太确定要放在这里什么)

def create
@post = current_user.posts.new(params[:post])


respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: 'Post was successfully created.' }
format.json { render json: @post, status: :created, location: @post }
else
format.html { render action: "new" }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end

index.html.erb:(不太确定如何指定使用不同值提交的帖子)

   <% @posts.reverse_each do |post| %>
<h1 style="font-family: latohairline"><%= link_to post.title, post %></h1>
<p style="margin-top: -20px"><small>Posted by <%= post.user.name %></small></p>
<p><%= post.description.html_safe %></p>

<% if user_signed_in? %>
<div><p><small><%= link_to 'Edit', edit_post_path(post) %> |
<%= link_to 'Delete', post, method: :delete, data: { confirm: 'Are you sure?' } %></small></p></div>
<% else %>
<% end %>

post.rb:(不确定模型中是否需要更改任何内容,但以防万一)

class Post < ActiveRecord::Base
validates_uniqueness_of :title
def to_param
[id, title.parameterize].join("-")
end
attr_accessible :description, :title, :image

validates :user_id, presence: true
validates :description, presence: true


belongs_to :user
has_attached_file :image


end

如有任何帮助,我将不胜感激,我已经谷歌搜索了几个小时,但不知道要搜索的所有正确术语,我最终一无所获。谢谢!

最佳答案

如果您对同一表单使用多个提交按钮,则必须检查 params[:commit]。这将设置为提交按钮的名称,因此在您的 Controller 中您可以检查

if params[:commit] == 'draft'
# save as a draft
else
# save as published
end

您是否也对如何将每个帖子归类为草稿感到困惑?我可能只会在您的模型上创建 bool 字段,然后基于它创建一些范围:

scope :drafts, -> { where(draft: true) }
scope :published, -> { where(draft: false) }

所以保存为草稿只是意味着您将 draft 设置为 true。然后,您可以使用 Post.draftsPost.published 检索任一集以在适当的时候显示它们。

关于ruby-on-rails - 在 Ruby on Rails 中创建草稿状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17768289/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com