新手问题 rails 的前后端交互的问题

join · 2013年12月02日 · 最后由 messiahxu 回复于 2013年12月02日 · 3706 次阅读

最近尝试着自己做了点东西,碰到点问题感觉有点卡壳了。

我有一个基本的前端 html 页面,我在里面用 jquery 写了如下代码:

var div = $("div[align=middle]");
div.append('<form action="/event/new" method="post"> <input type="text",name="event"></form>');

然后我在 routes 里面添加了如下代码:

post "/event/new" => "events#new_event"

这个 events 是一个 controller,然后我在 controller 里面添加了 new_event 方法. 现在的问题是我需要拿上面那个 form 里面的数据和那个页面中的一些 javascript 变量值。我该如何拿?

还有就是我发现大部分 rails 书籍侧重点都是在后端教你搭建一个基本的 CRUD 网站. 前端的东西基本上很少说,但到我自己真正做一个小东西的时候才发现前端这一块有点棘手。不知道怎么和后端连接起来.不知道大家有啥这方面好的资料推荐?

#1 楼 @messiahxu 看完了你给的链接,这里有些疑问请教下。

关于 form 我可以像他文章中介绍的这样

<%= form_for(@user, remote: true) do |f| %>
  <%= f.label :name %><br>
  <%= f.text_field :name %>
  <%= f.submit %>
<% end %>

然后链接到后台,这个 f 就是那个生成的 model. 然后我就可以在 controller 中对应的方法里拿到@xx_model这个东东。

但这篇文章中有一段我没有搞得很明白:

def create
  @user = User.new(params[:user])

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

这里是在 controller 里面做的。它是不是相当于 ajax 中的 response? 另外下面这个 json 传回给前端的话,前端怎么去拿到它然后做相应的处理呢? format.json { render json: @user, status: :created, location: @user }

楼主有必要了解一下 HTTP 原理,主要搞清楚浏览器和服务器怎么交互,虽然我也是菜鸟一个,但是这些东西对 Web 开发很重要

#2 楼 @join

format.json { render json: @user.errors, status: :unprocessable_entity }

这里就是向前端传了一个 json 对象啊,直接在 ajax 里处理就可以了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号