I was struck recently by how simplified the code is that @dhh was showing off in his youtube videos recently. I'm trying to learn from it and get my code refactored properly. The questions I'm finding are more of how his code lines up to what the rails generator creates. Below is an example of both of a #create action.
I realize that I probably shouldn't be comparing these two as they're made for different purposes, but from viewing both I can't help but see that one is much more code.
Rails Generated Controller #create
def create
@post = Post.new(post_params)
respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: 'Post was successfully created.' }
format.json { render :show, status: :created, location: @post }
else
format.html { render :new }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end
DHH code from (MessagesController#create)
def create
@recording = @bucket.record new_message, parent: @parent_recording, status: status_param,
subscribers: find_subscribers, category: find_category
if guided_setup?
complete_guided_setup
else
respond_to do |format|
format.any(:html, :js) { redirect_to edit_subscriptions_or_guided_recordable_url(@recording) }
format.json { render :show, status: :created }
end
end
end
By looking at the two samples, I think the part I really feel I can improve upon is perhaps the "respond_to" blocks. I began thinking through trimming down my code, but quickly noticed that there isn't a "format.html { render :new }" or a "if @post.save" example for this instance. Anyone have thoughts on this? Maybe if he were to have shown a block that more closely represented the PostsController#Create, I would've seen something closer to the generated code.