【问题标题】:Rails 4, Ajax Template is missingRails 4,缺少 Ajax 模板
【发布时间】:2016-04-26 11:20:21
【问题描述】:

我正在尝试使用 Ajax 练习添加一个简单的消息表单,但缺少有关模板的错误。错误表明其设计(宝石)相关的错误。错误是

缺少模板消息/创建、应用程序/使用 {:locale=>[:en]、:formats=>[:html]、:variants=>[]、:handlers=>[:erb、 :builder, :raw, :ruby, :slim, :jbuilder]}。搜索:* "/home/.rvm/gems/ruby-2.2.2/gems/devise-3.5.4/app/views"

messeges/index.html.erb

中的代码
<h1>Chat</h1>

<ul id="chat">
  <%= render @messages %>
</ul>

<%= form_for Message.new, remote: true do |f| %>

    <input name="authenticity_token"
           type="hidden"
           value="<%= form_authenticity_token %>"/>
    <%= f.text_field :subject, placeholder: "Subject" %>
    <%= f.text_field :content %>
    <%= f.submit "Send" %>
<% end %>

部分视图是_message.html.erb

<li>
  <%= message.subject %>: <%= message.content %>
</li>

create.js.erb

$('#chat').append("< %=  j render(@message) %>");
$("#message_content").val('');

并在控制器中创建动作 messages_controller.rb

def create
    @message = Message.create!(params[:message])
     # respond_to do |format|
     #   format.html
     #   format.js { render 'create.js.erb' }
     # end
 end

【问题讨论】:

  • 你的文件 create.js.html 应该叫 create.js.erb,试着告诉我们
  • 对不起我的错误它已经是 create.js.erb
  • 我认为这不是设计问题,也许它会在您想要运行脚本时尝试使用 html 文件进行响应。要回复 js,你必须写:respond_to do |format| if @message = Message.create!(params[:message]) format.js end
  • PopescuAlexandruConstantin 我按照您的建议更改了它。 ' response_to 做 |格式| if @message = Message.create (params[:message]) format.js end' 现在我得到 ActionController::UnknownFormat 错误。

标签: ruby-on-rails ruby ajax ruby-on-rails-4 devise


【解决方案1】:

在控制器顶部定义respond_to :html, :js 或按照@Popescu Alexandru Constantin 所说的那样:

respond_to do |format|
  format.js
  format.html
end

【讨论】:

  • @Faian 现在收到错误 ActionController::UnknownFormat 在此更改后。
  • 请尝试我的第一个建议,将respond_to :js, :html 添加为控制器内的第一行。当响应标头状态为 javascript 时,这将负责呈现您的 js 模板。
  • 感谢您回来。我已经尝试过了,但它不起作用。请有其他建议。
  • 能否请您尝试在 form_for 方法中设置url: 选项,并将格式作为选项传递给路径方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2017-04-08
  • 1970-01-01
相关资源
最近更新 更多