【发布时间】:2017-10-17 01:33:35
【问题描述】:
我正在使用刚刚升级到 v5.0.1(尚未升级到 5.1)的 RoR 构建活动站点。我的事件显示页面在页面底部有一个 cmets 部分,到目前为止,它只有一个创建和删除功能。 我想向 cmets 添加一个编辑/更新功能,这样只有创建评论的用户才能在他们认为合适的情况下编辑评论。我希望他们能够在同一页面上编辑他们的评论。
我正在尝试使用 remote: true & Ajax 来实现这些更改,而不是依赖 gem,因为它看起来不太复杂,但我以前从未这样做过,而且似乎没有通过 Internet/SO 获得清晰的指南。这是我的视图和控制器代码 -
cmets_controller.rb
def create
@event = Event.find(params[:event_id])
@comment = @event.comments.create!(params[:comment].permit(:name, :body))
@comment.user_id = current_user.id
redirect_to @event
end
def update
@comment.user = current_user
respond_to do |format|
if @comment.update
format.html { redirect_to @comment, notice: 'Comment was successfully updated.' }
format.js { }
format.json { render :show, status: :created, location: @comment }
else
format.html { render :new }
format.json { render json: @comment.errors, status: :unprocessable_entity }
end
end
end
def destroy
@event = Event.find(params[:event_id])
@comment = @event.comments.find(params[:id])
@comment.destroy
redirect_to event_path(@event)
end
_cmets.html.erb
<% if user_signed_in? %>
<p><%= link_to "Edit", remote: true %></p>
<p><%= link_to 'Delete', [comment.event, comment],
method: :delete,
class: "button",
data: { confirm: 'Are you sure?' } %></p>
<% end %>
我的理解是我需要在我的 views/cmets 文件夹中包含一个 .js.erb 文件来处理这个问题(edit.js.erb ?),但我不清楚我需要什么 javascript 代码包括为了这个工作。另外,我认为我上面的控制器代码似乎不正确 - 这应该进入编辑操作吗?我是否还需要在我的事件控制器中添加一个 Event#show 操作,因为它位于视图中?
任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby ajax model-view-controller