respond js different controller

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

respond js different controller

fugee ohu
I wanna modify the dom on the coversations show page which contains a new message form for the messages controller Presently the create action in the messages controlller redirects to conversations/show I wanna respond js with simply render conversations/show Can I do that?

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/efcc9162-a8f3-4d9c-98ff-690dfc04530f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: respond js different controller

Walter Lee Davis
Yes, you can. If you have the respond_to block in the controller, then anything you put inside the block can do whatever it wants to. Here's one from a controller I made some time ago with the scaffold generator:

  def update
    respond_to do |format|
      if @country.update(country_params)
        format.html { redirect_to @country, notice: 'Country was successfully updated.' }
        format.json { render :show, status: :ok, location: @country }
      else
        format.html { render :edit }
        format.json { render json: @country.errors, status: :unprocessable_entity }
      end
    end
  end

Only one block will respond to the action here, depending on the format and the result of #update. So this won't violate the single render/redirect constraint on controller method.

At the Ruby level, this is just a block inside a block.

Walter

> On Sep 8, 2018, at 10:58 AM, fugee ohu <[hidden email]> wrote:
>
> I wanna modify the dom on the coversations show page which contains a new message form for the messages controller Presently the create action in the messages controlller redirects to conversations/show I wanna respond js with simply render conversations/show Can I do that?
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
> To post to this group, send email to [hidden email].
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/efcc9162-a8f3-4d9c-98ff-690dfc04530f%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/A8EA7881-97A2-413F-8256-54733B04CC8C%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: respond js different controller

fugee ohu


On Saturday, September 8, 2018 at 12:50:33 PM UTC-4, Walter Lee Davis wrote:
Yes, you can. If you have the respond_to block in the controller, then anything you put inside the block can do whatever it wants to. Here's one from a controller I made some time ago with the scaffold generator:

  def update
    respond_to do |format|
      if @country.update(country_params)
        format.html { redirect_to @country, notice: 'Country was successfully updated.' }
        format.json { render :show, status: :ok, location: @country }
      else
        format.html { render :edit }
        format.json { render json: @country.errors, status: :unprocessable_entity }
      end
    end
  end

Only one block will respond to the action here, depending on the format and the result of #update. So this won't violate the single render/redirect constraint on controller method.

At the Ruby level, this is just a block inside a block.

Walter

> On Sep 8, 2018, at 10:58 AM, fugee ohu <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="XHSiZCI8BwAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">fuge...@...> wrote:
>
> I wanna modify the dom on the coversations show page which contains a new message form for the messages controller Presently the create action in the messages controlller redirects to conversations/show I wanna respond js with simply render conversations/show Can I do that?
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to <a href="javascript:" target="_blank" gdf-obfuscated-mailto="XHSiZCI8BwAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to <a href="javascript:" target="_blank" gdf-obfuscated-mailto="XHSiZCI8BwAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">rubyonra...@googlegroups.com.
> To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/rubyonrails-talk/efcc9162-a8f3-4d9c-98ff-690dfc04530f%40googlegroups.com" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/msgid/rubyonrails-talk/efcc9162-a8f3-4d9c-98ff-690dfc04530f%40googlegroups.com&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/msgid/rubyonrails-talk/efcc9162-a8f3-4d9c-98ff-690dfc04530f%40googlegroups.com&#39;;return true;">https://groups.google.com/d/msgid/rubyonrails-talk/efcc9162-a8f3-4d9c-98ff-690dfc04530f%40googlegroups.com.
> For more options, visit <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.
 
 I think respond_to within the action and respond js are different but a separate subject I put respond js at the top of the controller and created a create.js.erb view At the end of the create action there's nothing in substitution of repsond_to do |format| I'm just expecting it to render create.js.erb (in the messages controller still) and then the content of create.js.erb is gonna be $("#conversation_area").html("<%=j render('conversations/show') %>")
    Does that make sense? 

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/6ba94744-42bd-4839-b3f6-6df1ec7e8ccc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: respond js different controller

Walter Lee Davis
> On Sep 8, 2018, at 12:58 PM, fugee ohu <[hidden email]> wrote:
>
>
>
> On Saturday, September 8, 2018 at 12:50:33 PM UTC-4, Walter Lee Davis wrote:
> Yes, you can. If you have the respond_to block in the controller, then anything you put inside the block can do whatever it wants to. Here's one from a controller I made some time ago with the scaffold generator:
>
>   def update
>     respond_to do |format|
>       if @country.update(country_params)
>         format.html { redirect_to @country, notice: 'Country was successfully updated.' }
>         format.json { render :show, status: :ok, location: @country }
>       else
>         format.html { render :edit }
>         format.json { render json: @country.errors, status: :unprocessable_entity }
>       end
>     end
>   end
>
> Only one block will respond to the action here, depending on the format and the result of #update. So this won't violate the single render/redirect constraint on controller method.
>
> At the Ruby level, this is just a block inside a block.
>
> Walter
>
> > On Sep 8, 2018, at 10:58 AM, fugee ohu <[hidden email]> wrote:
> >
> > I wanna modify the dom on the coversations show page which contains a new message form for the messages controller Presently the create action in the messages controlller redirects to conversations/show I wanna respond js with simply render conversations/show Can I do that?
> >
> > --
> > You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
> > To post to this group, send email to [hidden email].
> > To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/efcc9162-a8f3-4d9c-98ff-690dfc04530f%40googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
>  
>  I think respond_to within the action and respond js are different but a separate subject I put respond js at the top of the controller and created a create.js.erb view At the end of the create action there's nothing in substitution of repsond_to do |format| I'm just expecting it to render create.js.erb (in the messages controller still) and then the content of create.js.erb is gonna be $("#conversation_area").html("<%=j render('conversations/show') %>")
>     Does that make sense?
>

Try using the long-hand, not the shortcut of using respond js at the top. The long-hand is what the shortcut becomes eventually, so it's clearer why it works that way. Yes, you will have to put a separate format.js in each method, but when you do that, you can see exactly what it is doing, and make each method respond the way you want it to.

Walter


>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
> To post to this group, send email to [hidden email].
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/6ba94744-42bd-4839-b3f6-6df1ec7e8ccc%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/7C09CA6C-DDEE-4F4E-851E-F4B269D56EF5%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.